我想创建一个包含2个名为lo
和hi
的列的表,然后是整数。
原始数量可能相当大。
然后,我想找到(选择)
lookup>=lo && lookup<hi
我想必须有一些技巧才能使查找更有效。
答案 0 :(得分:1)
在查询中,每个表不可能使用多个索引。
SQLite具有多列索引,但最多只有一列可以使用小于/大于比较。
您必须索引其中一列。 选择比较更可能从结果中排除更多行的那个。
参见文档:
Query Planning
The Query Planner
The Next-Generation Query Planner
EXPLAIN QUERY PLAN
答案 1 :(得分:0)
我做了这个
create table d.r (l integer check (l<h) , h integer , primary key(l,h))
explain query plan select * from d.r where l>=5 and 5<h
0|0|0|SEARCH TABLE r USING COVERING INDEX sqlite_autoindex_r_1 (l>?)
select * from d.r where l>=5 and 5<h
1|6
1|7
2|8
2|9
3|6
4|6
4|7
4|8
5|6
5|8
5|9