当前位置: 代码迷 >> 其他数据库 >> sql 的索引疑问解决方法
  详细解决方案

sql 的索引疑问解决方法

热度:8886   发布时间:2013-02-26 00:00:00.0
sql 的索引疑问
使用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无法利用这个索引。
------解决方案--------------------------------------------------------
探讨
select * from a order by Address ;
这种还是最慢的全表扫描啊 根本用不到索引

索引的优势在与快速定位少量数据

------解决方案--------------------------------------------------------
如果可以的话,
上传你的DB到www.access911.net/csdn
,用WINRAR压缩

sqlite> EXPLAIN select Time from a order by Time;

贴结果出来看看
------解决方案--------------------------------------------------------
参考 :
http://sqlite.org/opcode
  相关解决方案