|
|
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
Доброго. Коллеги, чем обеспечить? MD5 не дает уникальности, UNHEX(HEX(myvalue) - даст? Почему-то на форуме дохрена вопросов об этом, но нигде нет четкого и однозначного решения. Подавляющее большинство записей в поле будет примерно 1500-2000 символов, utf-8. Целей две - обеспечить уникальность, что наиболее нужно и ускорить выборку. Примерное число записей в таблице - 200 тысяч. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 13:40:01 |
|
||
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
Нужна бинарная уникальность или текстовая? Зачем выбран тип MediumText, если "в поле будет примерно 1500-2000 символов" ? Возможен ли переход на однобайтовую кодировку? А вообще, имхо, MD5 и не морочить голову. Уникальность он гарантирует. Другое дело, что он может давать ложные срабатывание в ничтожном количестве случаев. Но если очень хочется, то такие случаи можно обработать в коде, который производит вставку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 13:46:05 |
|
||
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
UsersMD5 не дает уникальности Уникальность даёт только сравнение исходных значений. И то с оговорками - следует ли считать уникальными два контента, если в одном на заднице лишний пробел? Вопрос надо ставить иначе - какова вероятность коллизии. Для MD5 это 1 к 2^128, по-моему, вполне себе пренебречь можно, если количество записей невелико (миллиард - это именно "невелико" в данном случае). Не нравится, много - возьми SHA. Более чем достаточно, особенно если 512 бит. Впрочем, это не снимает остальных вопросов предыдущего оратора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 14:05:41 |
|
||
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
Кстати, в дополнение к MD5, SH2 можно внести в уникальный ключ еще и длину строки и даже ее фрагмент. В сумме это даст космически ничтожную вероятность коллизий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 14:12:02 |
|
||
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
miksoft, Ммм... Не знаю, что ответить. Лежать будут исключительно тексты - стало быть, текстовая? Плаваю. :( Это в среднем 1500-2000, но будут и тексты по 50000 символов - примерно одна десятая от общего количества. Пренебречь в общем случае можно пробелами, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 15:05:47 |
|
||
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
UsersМмм... Не знаю, что ответить. Лежать будут исключительно тексты - стало быть, текстовая? Плаваю. :(Например, регистр букв важен? Буква "А" - это тоже самое что "А с кружочком" ? Буква "А с кружочком" - это тоже самое, что пара символов "А" и "кружочек"? Если хоть что-то из этого важно, то для какого языка? А бывает и хуже. Например, у меня в некоторых полях "А латинская" и "А русская" - одно и тоже. UsersПренебречь в общем случае можно пробелами, конечно.Можно - не ответ. Нужно или нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 15:11:06 |
|
||
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
miksoft, Регистр букв не важен, букв с кружочками не будет. Простые русские символы. Пробелами пренебрегаем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 16:19:46 |
|
||
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
UsersРегистр букв не важенТогда перед применением MD5/SH2 нужно привести к одному регистру и обрезать конечные (т.е. лишние) пробелы. В уникальный ключ утолкать "50000 символов", увы, не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 16:26:52 |
|
||
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
miksoft, А что такое SH2 и как его правильно готовить? На всем форуме единственный тред про него - этот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 17:34:29 |
|
||
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
Опечатка. Правильно будет SHA2() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 18:08:52 |
|
||
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
miksoft, Спасибо. Я тогда подытожу: под хранение поля данного типа надо завести поле длиной 128 символов, я его тип поставил как char(128). Работает это только, если mysql сконфигурирован с поддержкой ssl. Два параметра: что кодируем и с какой длиной select sha2(myvalue, 512) from tbl_test; Может, в фак? Инфы, конечно, надо побольше. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 22:04:25 |
|
||
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
Usersя его тип поставил как char(128)А почему не BINARY(64) ? UsersМожет, в фак?Да ну, весь вопрос из одной ссылки на доку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 22:20:20 |
|
||
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
miksoft, miksoftА почему не BINARY(64) ? так он же возвращает 128? Может, я чего не понимаю под ночь? В BINARY(64) вот это вот select sha2(myvalue, 512) from tbl_test не лезет. Data too long. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 22:35:58 |
|
||
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
Нет, я правильно ошибаюсь. В доке вот чего: As of MySQL 5.5.6, the return value is a nonbinary string in the connection character set. У меня как раз последняя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 23:35:29 |
|
||
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
В то же время, при создании индекса: ERROR 1062 (23000): Duplicate entry '431becca3fb40bfc707b47ab2805afef61f017a50fdd32d86156b5cf362f9ec8' for key 'IU_Test' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 23:42:03 |
|
||
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
UsersВ BINARY(64) вот это вот select sha2(myvalue, 512) from tbl_test не лезет. Data too long.UNHEX() же! 512/8=64 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 00:40:57 |
|
||
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
UsersВ то же время, при создании индекса: ERROR 1062 (23000): Duplicate entry '431becca3fb40bfc707b47ab2805afef61f017a50fdd32d86156b5cf362f9ec8' for key 'IU_Test'Ну так значит уже есть неуникальные строки. Проверяйте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 00:42:40 |
|
||
|
Уникальность поля типа MediumText
|
|||
|---|---|---|---|
|
#18+
miksoftUsersВ то же время, при создании индекса: ERROR 1062 (23000): Duplicate entry '431becca3fb40bfc707b47ab2805afef61f017a50fdd32d86156b5cf362f9ec8' for key 'IU_Test'Ну так значит уже есть неуникальные строки. Проверяйте. Да это понятно. Меня тут несоответствие между типами данных чуток удивило. Спасибо за подсказку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 09:53:18 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38801610&tid=1833959]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
72ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 439ms |

| 0 / 0 |
