У меня есть таблица с 65 миллионами строк, по которой я пытаюсь выполнить простой запрос. Таблица и индексы выглядят так:
CREATE TABLE E(
x INTEGER,
t INTEGER,
e TEXT,
A,B,C,D,E,F,G,H,I,
PRIMARY KEY(x,t,e,I)
);
CREATE INDEX ET ON E(t);
CREATE INDEX EE ON E(e);
Запускаемый мной запрос выглядит следующим образом:
SELECT MAX(t), B, C FROM E WHERE e='G' AND t <= 9878901234;
Мне нужно выполнить эти запросы для тысяч различных значений t и ожидал, что каждый запрос будет выполняться в доли секунды. Однако выполнение вышеуказанного запроса занимает около 10 секунд!
Я попытался запустить план запроса, но получил только это:
0|0|0|SEARCH TABLE E USING INDEX EE (e=?)
Так что это должен использовать индекс. При бинарном поиске я бы ожидал, что в худшем случае будет только 26 тестов, что было бы довольно быстрым.
Почему мой запрос такой медленный?