powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / На сколько числовой id быстрее строкового?
38 сообщений из 38, показаны все 2 страниц
На сколько числовой id быстрее строкового?
    #35254458
Crazier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ваяю базу данных. В ее состав входит таблица документов (рассчитываемый объем ~ 2 млн записей).
Делать id числовым (int) не совсем корректно по логике приложения. Строковым (varchar(128)) опасаюсь по производительности. Но знаний катастрофически не хватает.

Вопрос: на сколько оправданы мои опасения? (примерно, во сколько раз будет медленнее)

И еще, разумно ли в данном случае делать id хешем?

PS
База данных PostgreSQL или MySQL.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35254647
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего это зависит от SQL-сервера, а нормальному SQL-серверу по барабану. Смущает только один момент, использование сортировок,групировок и т.д. которые могут вообще работать неправильно при таком типе ключа.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35254669
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrazierДелать id числовым (int) не совсем корректно по логике приложения
ИМХО не совсем корректно делать ID строковым с точки зрения проектирования БД...
будет работать медленне примерно во "много" раз...
хотябы по размеру поля в байтах прикиньте разницу в int и char(10)...
сделайте тесты... потом нам расскажете во сколько раз точно:)
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35254693
Crazier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм, противоречивые ответы.

Не знаю, на сколько корректно однозначно судить по размеру байтов. Можно сравнивать ведь не полностью поля, а поэтапно (побайтно, например). Тогда упорядоченные строковые индексы будут тормозить не так сильно.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35254750
Осака Вестингауз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
id должен только идентифицировать запись. Не надо накладывать на него никакой информационной нагрузки из предметной области.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35254952
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на эту тему уже не один десяток страниц форума исписали, ищите по словосочеатниям "суррогатный ключ", "естесственный ключ"
например, тынц

Имхо, обычно лучше делать суррогатный (искусственный) ключ в числовой форме. Но бывают (хоть и не многочисленные) ситуации, когда естесственный удобнее.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35256385
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrazierИ еще, разумно ли в данном случае делать id хешем?
Совсем неразумно.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35256624
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrazierДелать id числовым (int) не совсем корректно по логике приложения.
Судя по этой строке, Вы собираетесь взвались на id какие-то неправильные функции. Лучше бросить эту затею.

CrazierСтроковым (varchar(128)) опасаюсь по производительности.
На эту тему гугль выдаст миллионы ссылок подробных обсуждений.

CrazierИ еще, разумно ли в данном случае делать id хешем?
Смотря с какой точки зрения. Если планируется очень активная вставка в эту таблицу из кучи сессий, это может быть одним из решений проблемы "горячего блока", если такая проблема актуальна. А вообще - игры разума на пустом месте.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35256881
Фотография krazana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну сделайте тогда это поле текстовым если у вас на то есть причины и не ставьте на него ключ )
а возьмите еше одно числовое поле в качестве id
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35257338
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crazier пишет:

> Делать id числовым (int) не совсем корректно по логике приложения.
> Строковым (varchar(128)) опасаюсь по производительности. Но знаний
> катастрофически не хватает.

> Вопрос: на сколько оправданы мои опасения? (примерно, во сколько раз
> будет медленнее)

Оправданы.

Но твой вопрос надо было бы переформулировать в следующем виде:
"Насколько длинный идентификатор хуже короткого" ?
То есть если что-то и будет хуже, то не потому, что первичный ключ
строковый, а потому, что он длинный - в 16-32 раза длинней.
А вот длинный первичный ключ - это плохо.
И к тому же я не верю, что тебе для идентификации документа нужна
именно такая вот длинная строка.

> И еще, разумно ли в данном случае делать id хешем?

Хэшем чего ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35257342
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Страдалецъ пишет:
> Скорее всего это зависит от SQL-сервера, а нормальному SQL-серверу по
> барабану. Смущает только один момент, использование

Ну неправда. Нифига не по барабану. Чем длинней ключ, тем меньше
ключей влезает на страницу индекса, больше нужно хранить страниц в индексе,
выше становится индекс и снижается его эффективность, поскольку
надо делать больше чтений для позиционированию по индексу.
Это, конечно же, не катастрофическое снижение производительности
(отношение сложностей обоих вариантов - константа, т.е. задачи имеют
одну и ту же сложность), но все же.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35257348
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНу неправда. Нифига не по барабану. Чем длинней ключ, тем меньше
ключей влезает на страницу индекса, больше нужно хранить страниц в индексе,
По барабану, по барабану. Эти аргументы повторялись тысячи раз; когда начинаются расчеты с цифрами, все оказывается не так, как представляется теоретически на пальцах. В частности, от глубины индекса мало что зависит, поскольку его корневые блоки напрочь кэшируются, крайне редко модифицируются, а следовательно читаются без каких-либо задержек, почти с нулевыми тратами. Основной недостаток длинного ключа - выполнение "масштабных чтений" индекса, прежде всего index full scan, когда надо таки заметно больше прочитать с диска.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35257350
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кифирчик пишет:

> ИМХО не совсем корректно делать ID строковым с точки зрения
> проектирования БД...

с точки зрения проектирования - как раз абсолютно корректно.

> будет работать медленне примерно во "много" раз...

Ну не во много раз будет разница, разница будет
в отношении высот деревьев поиска. Это, допустим, 4 и 5.
Или 4 и 6. Что-то в таком роде, но не во "много-много" раз.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35257398
Crazier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы. Имелся ввиду хеш внутреннего названия и номера документа.

Оставлю id числовым на данный момент. Когда появится база для импорта, попробую на тестовой машине сгенерировать строковые id и сравнить производительность. Результаты сообщу.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35257509
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrazierСпасибо за ответы. Имелся ввиду хеш внутреннего названия и номера документа.

Оставлю id числовым на данный момент. Когда появится база для импорта, попробую на тестовой машине сгенерировать строковые id и сравнить производительность. Результаты сообщу.

Это тема для форумов PostgreSQL или MySQL.
В зависимости от СУБД, и даже в зависимости от настройки СУБД результаты могут отличаться.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35257692
rata
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CrazierДелать id числовым (int) не совсем корректно по логике приложения. Строковым (varchar(128)) опасаюсь по производительности. Но знаний катастрофически не хватает.

Вопрос: на сколько оправданы мои опасения? (примерно, во сколько раз будет медленнее)

И еще, разумно ли в данном случае делать id хешем?

.

Если логике приложения есть дело до первичного ключа БД - надо что то менять. Либо в логике, либо в команде :-).
Ставьте INT автоинкрементный в качестве первичного ключа- и забудте про него :-)
Строковый - генерить надо как-то (надеюсь, Вы не планируете использовать естественный ключ? :-). Сдается мне- на этапе генерения и будут потери в производительности.
Опасаетесь проблемм со слиянием данных из разных баз , а думать над процедурой слияния лень - ну, попробуйте UNIQUEIdentifier, на Ваших объемах разницы не заметите.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35258914
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crazier пишет:

> Спасибо за ответы. Имелся ввиду хеш внутреннего названия и номера документа.

Хэш не может быть уникальным идентификатором по определению.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35276830
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще учитывайте такой момент: строковый (и вообще любого типа естественный) ключ часто помогает уменьшить соединения таблиц в запросах. Грубо говоря (за суть примера не пинайте, он надуманный, просто для иллюстрации), вместо

SELECT CL.NAME, STR.NAME
FROM CLIENTS CL, STREETS STR
WHERE CL.STREET_ID = STR.ID

можно будет написать

SELECT CL.NAME, CL.STREET_NAME
FROM CLIENTS CL

, потому что STREET_NAME, хотя и ссылается через внешний ключ на таблицу STREETS, но в CLIENTS хранится в полной форме.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35276939
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П.Еще учитывайте такой момент: строковый (и вообще любого типа естественный) ключ часто помогает уменьшить соединения таблиц в запросах. Грубо говоря (за суть примера не пинайте, он надуманный, просто для иллюстрации), вместо

SELECT CL.NAME, STR.NAME
FROM CLIENTS CL, STREETS STR
WHERE CL.STREET_ID = STR.ID

можно будет написать

SELECT CL.NAME, CL.STREET_NAME
FROM CLIENTS CL

, потому что STREET_NAME, хотя и ссылается через внешний ключ на таблицу STREETS, но в CLIENTS хранится в полной форме.Не соглашусь. Вы говорите не о выборе между строковыми/числовыми ключами, а о выносе части данных в отдельную сущность, что уже изменяет логику базы.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35276955
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft Владимир П.Еще учитывайте такой момент: строковый (и вообще любого типа естественный) ключ часто помогает уменьшить соединения таблиц в запросах. Грубо говоря (за суть примера не пинайте, он надуманный, просто для иллюстрации), вместо

SELECT CL.NAME, STR.NAME
FROM CLIENTS CL, STREETS STR
WHERE CL.STREET_ID = STR.ID

можно будет написать

SELECT CL.NAME, CL.STREET_NAME
FROM CLIENTS CL

, потому что STREET_NAME, хотя и ссылается через внешний ключ на таблицу STREETS, но в CLIENTS хранится в полной форме.Не соглашусь. Вы говорите не о выборе между строковыми/числовыми ключами, а о выносе части данных в отдельную сущность, что уже изменяет логику базы.Простите, наврал, прочитал ваш пост снизу вверх. Но все равно не соглашусь, т.к. вы предлагаете просто денормализацию базы, а не критерий выбора строкового или числового ключа.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35277088
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П. пишет:
> Еще учитывайте такой момент: строковый (и вообще любого типа
> естественный)

Не строковый, а именно естественный. (точнее - не дополнительный
суррогатный ключ в данной таблице). При этом ключ может быть
вообще любого типа, в том числе и числового. Зачем вы здесь
поднимаете эту тему, если это вообще никак не связано с обсуждаемым
вопросом - абсолютно не понятно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35279848
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Зачем вы здесь
поднимаете эту тему, если это вообще никак не связано с обсуждаемым
вопросом - абсолютно не понятно.


Автор темы пишет: " Делать id числовым (int) не совсем корректно по логике приложения ."
Но опасается неудовлетворительной производительности. Предлагает заменить идентификацию строкой на идентификацию дополнительным (по сути суррогатным) числовым полем.

Я показываю, что если сохранить тестовое представление (которое, очевидно, есть естественный атрибут в рамках его предметной области), можно в некоторых случаях не только не уменьшить, но и увлеичить производительность.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35282941
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Но твой вопрос надо было бы переформулировать в следующем виде:
"Насколько длинный идентификатор хуже короткого" ?
То есть если что-то и будет хуже, то не потому, что первичный ключ
строковый, а потому, что он длинный - в 16-32 раза длинней.
А вот длинный первичный ключ - это плохо.
И к тому же я не верю, что тебе для идентификации документа нужна
именно такая вот длинная строка.

Все же может иметь значение не тока длинна, но и суррогатность ключа: значения такого ключа менять, скорее всего, предется реже. В случае использования ключа в ссылочной целостности это может иметь значение в общем случае.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35287222
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo пишет:

> Все же может иметь значение не тока длинна, но и суррогатность ключа:
> значения такого ключа менять, скорее всего, предется реже.

Значение первичного ключа вообще-то никогда не меняется,
разве что в нештатных случаях.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35287231
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЗначение первичного ключа вообще-то никогда не меняется,
Суррогатного первичного ключа - во-первых. Необходимость менять значение - таки один из врожденных недостатков естественных ключей.

Во-вторых, штатные случаи тоже бывают, хотя и очень нечасто. Скажем, есть такой подход: если нужен независимый ввод справочников в куче мест, то вводимые записи украшаются отрицательными id и реплицируются в центр, где изменения сливаются и приобретают "правильный" номер.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35287665
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer пишет:
> Суррогатного первичного ключа - во-первых.

Любого.

Все, счастливо.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35316271
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЛюбого.
Каскадное обновление (конструкцией ON UPDATE CASCADE или триггером) еще никто не отменял.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35316440
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Суррогатного первичного ключа - во-первых. Необходимость менять значение - таки один из врожденных недостатков естественных ключей

Но если по проекту имеется требование чтобы естественный ключ всегда был и был всегда уникальным?... И? получается что на таблице нужно держать два индекса у которых весьма схожее назначение. Как вы думаете, что лучше - один индекс на таблице, который к тому же используется и для поиска, сортировки или 2 индекса, и при этом суррогат особой смысловой нагрузки не несет? А индекс по нему занимает место, и его надо корректировать как и все прочие индексы. Вопрос в том, насколько нормализована будет ваша база. Сколько джойнов будет в ваших запросах. Имейте в виду, что иной раз чтобы вытащить какой-нить атрибут вам придется сделать лишний джойн, что можно было бы избежать при естественных ключах.

Вывод - суррогатный ключ нужем там, где первичный ключ получается либо составным и очень длинным, либо его трудно ввести.... А "мастеров" которые на любую таблицу лепят суррогатный ключ - полно. Но не всегда это целесообразно.
Однозначного рецепта нет. Типа тут думать надо сначала....))))


Пример из жизни.
Было две таблицы - TableA и TableB - на них имелись суррогатные ключи. Между ними должна была быть связь многие ко многим. Понятное дело что нужно всего лишь организовать таблицу с двумя полями TableA_ID, TableB_ID, И комбинация этих полей - уникальна. И на эту таблицу нужно построить 2 индекса по (TableA_ID, TableB_ID) и по (TableB_ID, TableA_ID).
Но почему-то один "проектировщик" добавляет еще и третье поле - которое Identity, и тоже уникально для каждой записи. Зачем?... Понятно, что этот индекс и это поле никогда не будут использоваться. Вот и старайтесь, чтобы у вас такого тупизма не было.

Каждое поле, каждый индекс должен где-то использоваться. Чем меньше индексов - тем больше перфоменс при добавлениях/удалениях/исправлениях. Анализируйте структуру таблиц. Смотрите какие запросы какие индексы используют. Это долго и трудно.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35316641
Goffman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я для себя вывел правило, что обязательно нужен суррогатный ключ, если на таблицу будет ссылаться другая таблица. Причем его не обязательно создавать сразу, а можно создать, когда в этом возникнет необходимость. Никто же вас не заставляет (кроме так называемых правил хорошего тона) обязательно иметь в таблице PK.
Естесвенный ключ впоследствии может оказаться не уникальным, это встечается сплошь и рядом, и перенаправлять потом ссылки - задача не из легких.
В кросс-таблице обычно нет никакой нужды в суррогатном PK, т.к. на нее обычно никто не ссылается.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35318513
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П. пишет:

> Каскадное обновление (конструкцией ON UPDATE CASCADE или триггером) еще
> никто не отменял.
Ты пробовал ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35331374
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivТы пробовал ?
Да.
А что вас смущает? Низкая производительность такого обновления? Так если естественный ключ применять с умом (gardenman в сообщении № 5672455 хорошо описал разумные случаи), то его изменение -- крайне редкая операция. Обычно её необходимость возникает в случае человеческой ошибки ввода, когда данных в подчиненных таблицах еще мало.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35332379
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир П. пишет:
> MasterZiv
> Ты пробовал ?
>
> Да.
> А что вас смущает?

Меня смущает изменение полей первичного ключа, про которое, если
не ошибаюсь, шла речь.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35373745
Гость №555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenman[quot автор]
Пример из жизни.
Было две таблицы - TableA и TableB - на них имелись суррогатные ключи. Между ними должна была быть связь многие ко многим. Понятное дело что нужно всего лишь организовать таблицу с двумя полями TableA_ID, TableB_ID, И комбинация этих полей - уникальна. И на эту таблицу нужно построить 2 индекса по (TableA_ID, TableB_ID) и по (TableB_ID, TableA_ID).
Но почему-то один "проектировщик" добавляет еще и третье поле - которое Identity, и тоже уникально для каждой записи. Зачем?... Понятно, что этот индекс и это поле никогда не будут использоваться. Вот и старайтесь, чтобы у вас такого тупизма не было.


"Проектировщик" вводит сурогатный ключ в такую таблицу, когда она имеет, например, поле "закрытия" записи (что-то типа date_out). Имея такое поле, строка в таблице уже не будет уникальна по полям TableA и TableB. Она будет уникальна по полям TableA и TableB и date_out. А т.к. date_out для активных записей всегда null, по этим полям нельзя посторить первичный ключ.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #35375792
Konstantin~
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возвращаясь к теме топика: ссылка http://feedlounge.com/blog/2005/11/20/switched-to-postgresql/

Пример потери производительности MySQL/InnoDB при использовании uuid в качестве основного ключа. (см. комментарии к ссылке. )
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
На сколько числовой id быстрее строкового?
    #36755663
idSoftware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот тоже неожиданно пришло в голову решение как ускорить сравнение строк. Дано таблица людей
"Иванов","Иван","Дмитриевич","01.01.1945"
"Наполеон","Адольф","Виссарионович","01.01.1991"
Нужно при вводе новой записи наиболее быстро искать ее дубль.
Почему бы не добавить в таблицу поле md5? И не вычислять его при вводе в клиентской форме, поиск по числовому ключу наверняка ускорит поиск потенциального дубликата, я прав?

И вариант той же задачи, имеются 2 каталога с файлами , названными "Иванов Иван Дмитриевич 01.01.1945", ну вы поняли. Хотелось бы наиболее быстро рассортировать их по 4 каталогам: "Дубли" и соответственно 2 подкаталога в нем и "Уникальные" и в нем 2 подкаталога, содержащие файлы, которые не имеют аналогов в альтернативной папке. Предположим файлов в каждой папке не 4 млрд, а разумное количество, ну например 10000, т.е. получается выгоднее всего из названия файла получить хэш md5, сохранить в коллекцию в памяти а потом сравнивать уже не две коллекции строк ибо это накладная операция, сравнивать каждую строку с каждой, а сравнить коллекции чисел одинаковой разрядности

Думаю, с подобными задачами многие сталкиваются, кому достаются унаследованные массивы данных, кто нашел лучшие способы решения?
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #36755751
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторнаверняка ускорит поиск потенциального дубликата, я прав?И да и нет.
Поясню, сам по себе поиск ускорится не должен, но размер индекса сократится резко, стало быть читать такой индекс быстрее.
Далее - при любом алгоритме хэша неизбежны коллизии, вы предусмотрели реакцию системы на них?
Индексы могут потребоваться не только для поиска дублей, но и для поиска записей, так что посмотрите что вы выигрываете итого.
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #36756319
idSoftware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257Далее - при любом алгоритме хэша неизбежны коллизии, вы предусмотрели реакцию системы на них?Нет, но я предусмотрел вопрос, а посоветуйте алгоритм с наименьшей вероятностью возникновения коллизий на строковых последовательностях. Я думал CRC достаточно в принципе, она же считается быстрее md5, но вроде как вероятность коллизий у CRC существенна
...
Рейтинг: 0 / 0
На сколько числовой id быстрее строкового?
    #36756901
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпосоветуйте алгоритм с наименьшей вероятностью возникновения коллизий на строковых последовательностях
Больше меньше не суть дела. Суть в том, что возможны ложные тревоги, и по хорошему надо бы дополнительно проверить сравнив строки. По алгоритмам не в курсе.
Еще один момент. Если ваша субд не умеет вычисляемые поля или функциональные индексы, то вы храните хэш как дополнительное поле, то есть денормализуете, со всеми вытекающими отсюда граблями. Совсем не факт что вы на них наступите, но так сказать плюс один в копилку недостатков.
Резюмирую - идея вместо строк сравнивать хэши неплохая сама по себе, но имеет недостатки. В зависимости от профиля загрузки базы может быть выгодной или нет. Возможно применение комбинированных подходов: типа как в вашем примере с поиском людей - построить индекс по фамилии+хэш (индекс вырастет не сильно, но может быть использован и для поиска по фамилии, вероятность коллизий чуть снизится и т.д.)
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / На сколько числовой id быстрее строкового?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]