|
|
|
уникальный идентификатор для строки
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. В MySQL есть функция MD5(строка произвольной длины) - возвращает 32 символьную строку по входной строке; но для строк, длина которых не превышает 256 знаков, а средняя длина в районе 60 знаков, 32 символа кажется избыточно. Вопрос: для строк указанной длины скольки битное значение обеспечит хотя бы теоретическую уникальность? И какие алгоритмы могут это реализовать? В каком направлении искать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 17:06 |
|
||
|
уникальный идентификатор для строки
|
|||
|---|---|---|---|
|
#18+
если не хочешь md5, можешь юзать crc32 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 17:11 |
|
||
|
уникальный идентификатор для строки
|
|||
|---|---|---|---|
|
#18+
Когда на выходе функции меньше значений, чем на входе, то уникальности не жди. Особенно теоретической. Распиши конкретнее, что именно надо и в каком языке/среде разработки/СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 17:13 |
|
||
|
уникальный идентификатор для строки
|
|||
|---|---|---|---|
|
#18+
Сократить длину хэша можно за счет расширения набора символов, используемого в хэше. В первом приближении: берем все символы которые могут встречаться в исходном тексте (допустим - 40 со знаками препинания, но без учета регистра) и возведем в степень равную максимально возможной длине исходной строки (в нашем случае 256). Как результат получим количество теоретически возможных (в том числе абсолютно бессмысленных с точки зрения грамматики и т. п.) уникальных сочетаний (40^256). Для покрытия этого количества сочетаний хэш должен обеспечивать не меньшую мощность, т. е. тоже давать 40^256 сочетаний. Уменьшая длину хэша, мы можем достигнуть увеличения его мощности за счет расширения диапазона используемых символов (если использовать все что дает один байт, то теоретически это 256 символов). Теперь считайте сами: 256^x=40^256 К этим рассуждениям надо добавить что: осмысленных строк состоящих из одних запятых или букв "а" не бывает, так что мощность множества исходных строк можно как то сократить. существующая функция md5 здесь не поможет, так как она не способна расширять диапазон используемых символов. для теоретической уникальности 32 символов недостаточно :) а для практической это то что надо (так что пользуйтесь на здоровье функцией md5 и не морочьте людям голову) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 23:24 |
|
||
|
уникальный идентификатор для строки
|
|||
|---|---|---|---|
|
#18+
miksoftРаспиши конкретнее, что именно надо и в каком языке/среде разработки/СУБД. Есть два множества строк, нужно из первого выбрать строки, которых нет во втором; и из второго выбрать строки, которых нет в первом. Данные лежат на MySQL, пишу на VBScript (WSH). Перебор не строк, а их 32-х символьных идентификаторов сильно скорости не прибавил. Похоже надо играться с индексами строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 10:06 |
|
||
|
уникальный идентификатор для строки
|
|||
|---|---|---|---|
|
#18+
A Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 10:08 |
|
||
|
уникальный идентификатор для строки
|
|||
|---|---|---|---|
|
#18+
В MySQL есть функция MD5(строка произвольной длины) Есть два множества строк, нужно из первого выбрать строки, которых нет во втором; и из второго выбрать строки, которых нет в первом. Данные лежат на MySQL, пишу на VBScript (WSH). Перебор не строк, а их 32-х символьных идентификаторов сильно скорости не прибавил. Похоже надо играться с индексами строк. бляха муха.. IT мертво.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 10:11 |
|
||
|
уникальный идентификатор для строки
|
|||
|---|---|---|---|
|
#18+
Привет, Палестинец! Ты пишешь: ПалестинецП> бляха муха.. IT мертво..нет. это просто такой спецконтингент на MySQL сидит. -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 10:15 |
|
||
|
уникальный идентификатор для строки
|
|||
|---|---|---|---|
|
#18+
sonne miksoftРаспиши конкретнее, что именно надо и в каком языке/среде разработки/СУБД. Есть два множества строк, нужно из первого выбрать строки, которых нет во втором; и из второго выбрать строки, которых нет в первом. Данные лежат на MySQL, пишу на VBScript (WSH). Перебор не строк, а их 32-х символьных идентификаторов сильно скорости не прибавил. Похоже надо играться с индексами строк.Это делается одним или двумя SQL-запросами. Один запрос или два - зависит от постановки задачи. В любом случае, с подробным описанием задачи и версией MySQL добро пожаловать на форум MySQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 10:37 |
|
||
|
уникальный идентификатор для строки
|
|||
|---|---|---|---|
|
#18+
Я двумя запросами и делаю.Только они Cel2G\1G оперативки вешают на час так, что винда как дохлый таракан. Вот и ищу способ, как запросы убыстрить. Если бы у строки был к примеру 32 битный идентификатор, так оно бы летало наверное, а так перелопать ка эти строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 11:01 |
|
||
|
уникальный идентификатор для строки
|
|||
|---|---|---|---|
|
#18+
sonneЯ двумя запросами и делаю.Только они Cel2G\1G оперативки вешают на час так, что винда как дохлый таракан. Вот и ищу способ, как запросы убыстрить.Опять же на форуме MySQL приведите ваш запрос и его план, описание таблиц и индексов, версию MySQL и используемый движок. Неплохо бы еще количества записей в таблице и прогнозируемое количество записей в результате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 11:07 |
|
||
|
|

start [/forum/topic.php?fid=16&tid=1346206]: |
0ms |
get settings: |
7ms |
get forum list: |
26ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
170ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 493ms |

| 0 / 0 |
