表有索引时,你的查询语句中引用了这个条件,检索数据时先进行索引查找,找到了索引项,再根据索引项指向的位置找到数据,这样速度就会很快。如果索引中没有相应的项,就要进行表扫描来找数据,速度自然会慢。
你的这种情况很多:
第一:
索引在海量数据时候很有用处,就像你查字典,通过目录找一个字很快,但是你的字典就一个字,还通过索引反倒慢了。
--------------------------------------------------------------------
第二:
你的索引覆盖了部分部分盘面,结果还是需要全表扫描,这种情况不多见,一般索引都是全表列索引,没有丢弃的现象。
---------------------------------------------------------------------
第三:你应该采用过亿条目数据来测试一下,这时候就知道怎么回事了。
select * from Table where typeid=1 order by typeid desc
如果表里没有这个typeid=1的数据时就会很慢
很慢,然后返回的结果是一条数据也没有? 是这样情况么?
加了typeid=1数据库可以根据索引查找到数据,没加,它要查所有数据,你说慢不慢?
多表查询对建立关系和索引的要求
父子表中, 子表建立外键,应该自动建立一个索引
请参考