关于索引

在users表的groupid上建了索引,groupid = 10的时候,有100万多条记录,groupid = 11的时候没有记录,为什么等于10的时候没使用索引,而记录少时(或没有,比如groupid=11)使用了索引。请看下边两张截图,如果我有什么理解不对的地方请指出,谢谢,我用的oracle

[img]http://dl.iteye.com/upload/attachment/178723/bb4598bf-7a2e-3c0c-b908-d798793263db.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/178725/2f6b45b7-8ea4-3afb-a8db-876afe58fa1f.jpg[/img]

这是ORACLE的自动判断,在你数据量太多的情况下,不用索引比用索引更好。

一般而言,普遍认为查询结果等于表数据量30%的查询,使用索引和不使用索引效率是差不多的,如果比例再大的话,使用索引反倒不好。当然了,这时候使用了索引速度会快,但是对系统的消耗太大。在并发时,会对别的业务造成影响。而且如果涉及到表关联的话,可能速度反倒会降低。

一般建立索引的原则是低重复率,数据分布平均。而你这里的groupid并不适合建立索引。