Очень долгий поиск по первичному ключу - WHERE id IN (x1, x2, x3)
Сервер 4core/64GB RAM/30GB SSD
Ubuntu 22, MariaDB: 10.6.7-MariaDB-2ubuntu1
Нагрузка на сервер нулевая.
Таблица с 3млн записей:
CREATE TABLE `t1` (
`id` INT(9) UNSIGNED NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY (`id`) USING BTREE,
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB;
Делаю запрос по первичному ключу используя IN:
SELECT id FROM `t1` WHERE id IN (123,2352,2423);
Запрос выполняется очень долго - 3 секунды.
В таком варианте время выполнения аналогично:
SELECT id FROM `t1` WHERE id=123 OR id=2352 OR id=2423;
Если же пробовать выполнить запрос
SELECT id FROM `t1` WHERE id>2352 AND id<2362
то результат получаю мгновенно.
Почему с параметром "IN" запрос по первичному ключу такой долгий? В mySQL с аналогичными параметрами сервера и настроек таких проблем не возникало.
Ответы (1 шт):
Проблему устранил оптимизацией таблицы ))) : OPTIMIZE TABLE t1;
До этого переносил БД с СУБД mySQL с помощью mysqldump, и выполнением полученного .sql (куча запросов INSERT) на новой машине с СУБД mariaDB.
Возможно при импорте конечный оператор включения индексов не был выполнен и импорт был не полностью завершен. (недоглядел)