Oracle:多个查询条件时如何添加索引
现有表Student包含ID、Name、Gender、Birthday字段(其中ID为主键)
查询Student时可分别根据这四个条件任意组合
当数据量很大时查询会很慢,该如何创建索引呢?
需要为Name、Gender、Birthday字段也分别创建索引吗?
或者我该看下什么文章来帮助解决这个问题呢?谢谢。
1、数据量超过2000W
2、查询一次大约需要20秒
3、条件任意组合,这里仅以NAME、GENDER作为条件,每页10条
SELECT * FROM (SELECT ROWNUM RN, ID, NAME, GENDER, BIRTHDAY FROM (SELECT NUM FROM STUDENT WHERE NAME='小明' AND GENDER='01') WHERE ROWNUM <= 20) WHERE RN >= 10;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
gender字段只有两个值,不建议创建索引。
Name,Gender字段的不同值多,建议创建索引。
另外大数据量查询慢的问题,比较常用的做法就是做分页处理,具体写法自己搜索一下。
分页的sql语句建议:
1、ROWNUM <= 20的条件,最好能放到最内层的sql语句的where条件中
2、可以尝试一下IN 的用法,如:
另外, 把oracle的执行计划发出来,方便看执行过程。