问题描述
- oracle数据库select效率
-
前提:数据库有将近100W条数据。
目的:需要排序后获取前10条。
处理:select * from (select * from table where col1=1 order by col1) where rownum <= 10;
问题:如上的sql语句,如果数据少的话,可以达到要求;但是如果数据量将近100W,效率就不行了。因为为括号里面的sql是提取全部数据,然后对所有数据就行排序,然后才取前10条。效率可想而知。
各位大虾有没有什么高招,可以提高下oracle的select的效率。
解决方案
select * from (select * from table where col1=1 order by col1) where rownum <= 10;
如果这条语句的话,你可以根据col1建立一个索引,速度就上去了
解决方案二:
select * from table where col1=1 and rownum <= 10 order by col1 这样不可以吗
解决方案三:
col1=1 order by col1,既然是提取col1=1的为何还有以col1排序呢?直接elect * from table where col1=1 and rownum <= 10 不可以吗?
若是好多数据先排序再选取前十的话,可以考虑使用索引啊,对col1建立索引
时间: 2024-09-07 09:52:10