使用sqlite记录数据
CREATE TABLE a(Time INTERGE, Address INTERGE, ....);
希望可以比较快速的以Time或者Address来查询,所以创建了索引, 有以下方法:
1.
CREATE INDEX iTime ONa(Time);
CREATE INDEX iAddrONa(Address);
2.
CREATE INDEX iTimeAddr ONa(Time, Address);
3、
CREATE INDEX iAddrTime ONa(Address,Time);
用第2方法创建的索引,并不能提高如
select * from a order by Address ;
这样查询的速度(方法3也不能提高以Time排序的查询)。
请问各位:第二,三方法在某些情况有什么优点?
或者各位小结一下索引的创建注意事项~ 谢谢
------解决方案--------------------------------------------------------
select * from a order by Address ;
这种还是最慢的全表扫描啊 根本用不到索引
索引的优势在与快速定位少量数据
------解决方案--------------------------------------------------------
1 可以用到索引。 CREATE INDEX iAddrONa(Address);
3. 可以利用索引 iAddrTime ONa(Address,Time);
但2无法利用这个索引。
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
如果可以的话,
上传你的DB到www.access911.net/csdn
,用WINRAR压缩
sqlite> EXPLAIN select Time from a order by Time;
贴结果出来看看
------解决方案--------------------------------------------------------
参考 :
http://sqlite.org/opcode