sxwnhywk
sxwnhywk
采纳率50%
2015-10-09 03:03

oracle数据库select效率

已采纳

前提:数据库有将近100W条数据。
目的:需要排序后获取前10条。
处理:select * from (select * from table where col1=1 order by col1) where rownum <= 10;
问题:如上的sql语句,如果数据少的话,可以达到要求;但是如果数据量将近100W,效率就不行了。因为为括号里面的sql是提取全部数据,然后对所有数据就行排序,然后才取前10条。效率可想而知。
各位大虾有没有什么高招,可以提高下oracle的select的效率。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • lzp_lrp WorldMobile 6年前

    select * from (select * from table where col1=1 order by col1) where rownum <= 10;

    如果这条语句的话,你可以根据col1建立一个索引,速度就上去了

    点赞 评论 复制链接分享
  • qq_20941571 嗒哒 6年前

    col1=1 order by col1,既然是提取col1=1的为何还有以col1排序呢?直接elect * from table where col1=1 and rownum <= 10 不可以吗?
    若是好多数据先排序再选取前十的话,可以考虑使用索引啊,对col1建立索引

    点赞 评论 复制链接分享
  • u011896124 16ying 6年前

    select * from table where col1=1 and rownum <= 10 order by col1 这样不可以吗

    点赞 评论 复制链接分享

相关推荐