Очень долгий поиск по первичному ключу - 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 шт):

Автор решения: Ruport

Проблему устранил оптимизацией таблицы ))) : OPTIMIZE TABLE t1;

До этого переносил БД с СУБД mySQL с помощью mysqldump, и выполнением полученного .sql (куча запросов INSERT) на новой машине с СУБД mariaDB.

Возможно при импорте конечный оператор включения индексов не был выполнен и импорт был не полностью завершен. (недоглядел)

→ Ссылка