以前在项目上有建立过索引,当时没有太深的理解!只知道对查询速度提升十分明显!昨天去笔试,考了这方面的知识:现在特地来问一下!
有一个上百万数据量的人员信息表,最后的结果集是找出每月薪资在5000元以上人的姓名,请问索引应该建在哪个字段上?
我当时是写建立在ID上,后来想想应该建在姓名上,请问是否正确!
索引建立的原则是什么?
分不多,只能散20分了,谢谢!
有一个上百万数据量的人员信息表,最后的结果集是找出每月薪资在5000元以上人的姓名,请问索引应该建在哪个字段上?
我当时是写建立在ID上,后来想想应该建在姓名上,请问是否正确!
索引建立的原则是什么?
分不多,只能散20分了,谢谢!
解决方案 »
- Toad for oracle中如何像PL/SQL一样直接编辑数据
- oracle行变列的问题
- 一家公司的笔试题目,大家来答答看,顺便涨涨知识!
- 日志文件自动丢失ERROR: ORA-01033: ORACLE initialization or shutdown in progress。
- 执行以下SQL语句出现的问题
- INSTR('CORPORATE FLOOR','OR', 3, 2
- 请教:关于日志文件的三种状态
- oracle 问题,在线等。
- 请问,在存储过程中怎么不能读取v$session 等系统表,怎么读取呢?!!!
- 哪位高手可以解释一下下面的代码?
- 关于 EXECUTE IMMEDIATE
- 问一道SQL笔试题,谢谢!
每月薪资在5000元以上人的姓名 = where salary >5000
所以索引要建在salary上, 当然建立了索引,oracle实际执行是并不一定会用,这要视selectivity(选择度)而定,
举例来说,你100万条记录,其中90万条记录的salary>5000,那么这时走索引反而效率更低,Full table scan效率更高针对本例 你也可以考虑在name和salary上建复合索引,效果更好
而且索引并不总是起作用