У меня есть таблица MySQL 5.7 с двоичным столбцом идентификатора (16), который используется в качестве первичного ключа.Движок - InnoDb.
Строки создаются с помощью Doctrine с использованием https://github.com/ramsey/uuid-doctrine#innodb-optimised-binary-uuids согласно https://www.percona.com/blog/2014/12/19/store-uuid-optimized-way/
Например, uuid 55a54172-f5e4-11e8-aa0d-fe02fd3f406
хранится как HEX(id) = 11E8F5E455A54172AA0DFE02FD3F406
в базе данных
Я пытаюсь найти строки с одинаковым началом строки.
Примерно так с псевдокодом
SELECT *
FROM log
WHERE id LIKE 11E8F5E4
Я пытался запросить
SELECT HEX(`id`) AS `id`
FROM `log`
WHERE (`id` & UNHEX('11E8F5E4')) = UNHEX('11E8F5E4')
LIMIT 10
, что быстро, но строки с другим префиксом, таким как 11E8E8AD47E47970B1C9525400B61105
, возвращаются
Как я могу это сделать, используя индекс Btree (по соображениям производительности)?