powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Уникальность поля типа MediumText
18 сообщений из 18, страница 1 из 1
Уникальность поля типа MediumText
    #38800733
Users
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго.

Коллеги, чем обеспечить? MD5 не дает уникальности, UNHEX(HEX(myvalue) - даст? Почему-то на форуме дохрена вопросов об этом, но нигде нет четкого и однозначного решения.
Подавляющее большинство записей в поле будет примерно 1500-2000 символов, utf-8. Целей две - обеспечить уникальность, что наиболее нужно и ускорить выборку. Примерное число записей в таблице - 200 тысяч.
...
Рейтинг: 0 / 0
Уникальность поля типа MediumText
    #38800747
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужна бинарная уникальность или текстовая?
Зачем выбран тип MediumText, если "в поле будет примерно 1500-2000 символов" ?
Возможен ли переход на однобайтовую кодировку?

А вообще, имхо, MD5 и не морочить голову. Уникальность он гарантирует. Другое дело, что он может давать ложные срабатывание в ничтожном количестве случаев. Но если очень хочется, то такие случаи можно обработать в коде, который производит вставку.
...
Рейтинг: 0 / 0
Уникальность поля типа MediumText
    #38800780
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsersMD5 не дает уникальности
Уникальность даёт только сравнение исходных значений. И то с оговорками - следует ли считать уникальными два контента, если в одном на заднице лишний пробел?
Вопрос надо ставить иначе - какова вероятность коллизии. Для MD5 это 1 к 2^128, по-моему, вполне себе пренебречь можно, если количество записей невелико (миллиард - это именно "невелико" в данном случае). Не нравится, много - возьми SHA. Более чем достаточно, особенно если 512 бит.
Впрочем, это не снимает остальных вопросов предыдущего оратора.
...
Рейтинг: 0 / 0
Уникальность поля типа MediumText
    #38800789
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, в дополнение к MD5, SH2 можно внести в уникальный ключ еще и длину строки и даже ее фрагмент. В сумме это даст космически ничтожную вероятность коллизий.
...
Рейтинг: 0 / 0
Уникальность поля типа MediumText
    #38800895
Users
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

Ммм... Не знаю, что ответить. Лежать будут исключительно тексты - стало быть, текстовая? Плаваю. :(

Это в среднем 1500-2000, но будут и тексты по 50000 символов - примерно одна десятая от общего количества.

Пренебречь в общем случае можно пробелами, конечно.
...
Рейтинг: 0 / 0
Уникальность поля типа MediumText
    #38800901
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsersМмм... Не знаю, что ответить. Лежать будут исключительно тексты - стало быть, текстовая? Плаваю. :(Например, регистр букв важен? Буква "А" - это тоже самое что "А с кружочком" ? Буква "А с кружочком" - это тоже самое, что пара символов "А" и "кружочек"?
Если хоть что-то из этого важно, то для какого языка?

А бывает и хуже. Например, у меня в некоторых полях "А латинская" и "А русская" - одно и тоже.
UsersПренебречь в общем случае можно пробелами, конечно.Можно - не ответ. Нужно или нельзя?
...
Рейтинг: 0 / 0
Уникальность поля типа MediumText
    #38801038
Users
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

Регистр букв не важен, букв с кружочками не будет. Простые русские символы.
Пробелами пренебрегаем.
...
Рейтинг: 0 / 0
Уникальность поля типа MediumText
    #38801052
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsersРегистр букв не важенТогда перед применением MD5/SH2 нужно привести к одному регистру и обрезать конечные (т.е. лишние) пробелы.

В уникальный ключ утолкать "50000 символов", увы, не получится.
...
Рейтинг: 0 / 0
Уникальность поля типа MediumText
    #38801152
Users
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

А что такое SH2 и как его правильно готовить? На всем форуме единственный тред про него - этот.
...
Рейтинг: 0 / 0
Уникальность поля типа MediumText
    #38801199
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опечатка. Правильно будет SHA2()
...
Рейтинг: 0 / 0
Уникальность поля типа MediumText
    #38801350
Users
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

Спасибо. Я тогда подытожу: под хранение поля данного типа надо завести поле длиной 128 символов, я его тип поставил как char(128).
Работает это только, если mysql сконфигурирован с поддержкой ssl.
Два параметра: что кодируем и с какой длиной

select sha2(myvalue, 512) from tbl_test;

Может, в фак? Инфы, конечно, надо побольше. :)
...
Рейтинг: 0 / 0
Уникальность поля типа MediumText
    #38801353
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usersя его тип поставил как char(128)А почему не BINARY(64) ?
UsersМожет, в фак?Да ну, весь вопрос из одной ссылки на доку.
...
Рейтинг: 0 / 0
Уникальность поля типа MediumText
    #38801355
Users
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

miksoftА почему не BINARY(64) ?

так он же возвращает 128? Может, я чего не понимаю под ночь?
В BINARY(64) вот это вот select sha2(myvalue, 512) from tbl_test не лезет. Data too long.
...
Рейтинг: 0 / 0
Уникальность поля типа MediumText
    #38801377
Users
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, я правильно ошибаюсь. В доке вот чего: As of MySQL 5.5.6, the return value is a nonbinary string in the connection character set. У меня как раз последняя.
...
Рейтинг: 0 / 0
Уникальность поля типа MediumText
    #38801378
Users
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В то же время, при создании индекса:

ERROR 1062 (23000): Duplicate entry '431becca3fb40bfc707b47ab2805afef61f017a50fdd32d86156b5cf362f9ec8' for key 'IU_Test'
...
Рейтинг: 0 / 0
Уникальность поля типа MediumText
    #38801399
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsersВ BINARY(64) вот это вот select sha2(myvalue, 512) from tbl_test не лезет. Data too long.UNHEX() же!
512/8=64
...
Рейтинг: 0 / 0
Уникальность поля типа MediumText
    #38801400
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsersВ то же время, при создании индекса:

ERROR 1062 (23000): Duplicate entry '431becca3fb40bfc707b47ab2805afef61f017a50fdd32d86156b5cf362f9ec8' for key 'IU_Test'Ну так значит уже есть неуникальные строки. Проверяйте.
...
Рейтинг: 0 / 0
Уникальность поля типа MediumText
    #38801610
Users
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftUsersВ то же время, при создании индекса:

ERROR 1062 (23000): Duplicate entry '431becca3fb40bfc707b47ab2805afef61f017a50fdd32d86156b5cf362f9ec8' for key 'IU_Test'Ну так значит уже есть неуникальные строки. Проверяйте.

Да это понятно. Меня тут несоответствие между типами данных чуток удивило. Спасибо за подсказку.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Уникальность поля типа MediumText
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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