Если столбцы, с которыми у вас возникают проблемы, являются «хэшами», тогда рассмотрим следующее ...
Если «хэш» является двоичной строкой, вы действительно должны использовать тип данных BINARY(...)
.
Если «хеш» - это шестнадцатеричная строка, вам не нужно utf8, и этого следует избегать из-за проверок символов и т. д. Например, MD5(...)
в MySQL дает 32-байтовый размер фиксированной длины строка. SHA1(...)
дает 40-байтную шестую строку. Это можно сохранить в CHAR(32) CHARACTER SET ascii
(или 40 для sha1).
Или, еще лучше, сохраните UNHEX(MD5(...))
в BINARY(16)
. Это уменьшает половину размера столбца. (Тем не менее, это делает его непечатаемым.) SELECT HEX(hash) ...
, если вы хотите, чтобы он был читабельным.
Сравнение двух столбцов BINARY
не имеет проблем с сортировкой.