Предположим, что у нас есть таблица, которая выглядит так:
create table t1(c1 varchar(x)collate utf8mb4_general_ci, index(c1))
Чтобы делать байт-чувствительные сравнения, мы имеем в основном два пути (предположим, что все соответствующие строки не имеют конечные пробелы, т.е. все они padspace-compliant):
select*from t1 where c1 ='test'collate utf8mb4_bin
select*from t1 where c1 = binary'test'
Что должно быть предпочтительным, если производительность вызывает озабоченность?
При использовании индекса невариантной сортировки символов быстрее сравнить с двоичная строка или двоичная сортировка?
(Добавление нового столбца в таблицу только для хранения двоичного эквивалента c1
является большим хитом при хранении и не возможно.)
(P.S. Понравился бы ответ, который сравнивает как сравнение хэша, так и btree, хотя меня в первую очередь интересует сравнение btree.)