Какова цель UNIQUE в MySQL (InnoDB) - PullRequest
       3

Какова цель UNIQUE в MySQL (InnoDB)

1 голос
/ 14 ноября 2011

Для меня ключевое слово UNIQUE предназначено для лучшей структуризации вашей таблицы (за исключением PRIMARY KEY, который используется для идентификации).Например, файлы.Если вы не хотите добавлять этот файл в базу данных, вы можете использовать его хэш-ключ SHA-2 как UNIQUE KEY.Но SHA-2 имеет 512 символов, а InnoDB имеет ограничение 255. Почему MySQL имеет этот предел и как использовать большие, более надежные уникальные ключи, такие как SHA-2

Ответы [ 2 ]

3 голосов
/ 14 ноября 2011

SHA2-512 дает 512 битов, что составляет 64 байта. Или символ (128) в шестнадцатеричном виде.

Уникальная длина ключа индекса составляет 1000 байтов для MyISAM и 767 для InnoDB в MySQL 5.5.

Уникальный используется для обеспечения естественной уникальности при выборе суррогатного первичного ключа AUTO_INCREMENT. Или уникальность суперключей, когда вы хотите принудительно использовать подтипы . и т.д.

Edit:

Чтобы обеспечить уникальность значений LOB, вы просто хешируете это и добавляете ограничение. Если у вас достаточно строк, чтобы измерить риск коллизий, то почему у вас так много значений больших объектов в базе данных?

1 голос
/ 14 ноября 2011

В MySQL UNIQUE для индексации. Лучше не использовать его для проверки уникальности текстовых полей.

Я всегда проверяю целостность и уникальность данных в приложении, а не в MySQL.

...