exp:table schema:
Create Table tbl {
key int,
seq int,
name text,
Primary key(key, seq) };
对于每个键,有多行(假设1000K); 假设我想查询特定密钥的内容,我的查询是:
select * from tbl where key = 'key1'
(实际上我在程序中使用cpp驱动程序,并使用分页界面)
结果包含1000k行,此查询的成本约为10秒。 我认为每个查询的数据都存储在磁盘上,因此返回的速度非常快。
为什么这么长时间花费? 有没有办法优化???
答案 0 :(得分:0)
为什么花费这么长时间?
您的查询返回的行数几乎为1000K = 1000,000 = 1M 。这就是为什么它花费的时间太长了。
有没有办法优化???
是!! 有。
尝试在查询中使用 limit
和旋转/分页。
从表格定义来看,您似乎拥有一个群集密钥seq
,您可以轻松使用此seq
值来优化您的查询。假设聚类键(seq
)具有默认的升序。将您的查询更改为:
select * from tbl where key = 'key1' and seq > [pivot] limit 100
将[pivot]
替换为结果集的最后一个值。对于第一个查询,请将Integer.MIN_VALUE
用作[pivot]
。
例如:
select * from tbl where key = 'key1' and seq > -100 limit 100