以前在项目上有建立过索引,当时没有太深的理解!只知道对查询速度提升十分明显!昨天去笔试,考了这方面的知识:现在特地来问一下!
  有一个上百万数据量的人员信息表,最后的结果集是找出每月薪资在5000元以上人的姓名,请问索引应该建在哪个字段上?
我当时是写建立在ID上,后来想想应该建在姓名上,请问是否正确!
  索引建立的原则是什么?
  分不多,只能散20分了,谢谢!

解决方案 »

  1.   

    根据你的查询条件来确定索引建立哪个字段上
    每月薪资在5000元以上人的姓名 = where salary >5000
    所以索引要建在salary上, 当然建立了索引,oracle实际执行是并不一定会用,这要视selectivity(选择度)而定,
    举例来说,你100万条记录,其中90万条记录的salary>5000,那么这时走索引反而效率更低,Full table scan效率更高针对本例 你也可以考虑在name和salary上建复合索引,效果更好
      

  2.   

    对的,一般索引也是建立在你常用的WHERE条件下
    而且索引并不总是起作用