【发布时间】:2020-05-03 23:13:50
【问题描述】:
我有一个包含大约 6500 万行的表,我正在尝试对其运行一个简单的查询。表和索引如下所示:
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 个测试,我会很快。
为什么我的查询这么慢?
【问题讨论】:
-
我想知道如果你执行 "SELECT MAX(t), B, C FROM E WHERE t
-
@Keshav 不,它需要大约相同的时间