高效分页的SQL技巧(以Oracle为例)
程序员文章站
2022-03-29 14:07:43
...
一般的分页写法大概就是下面的样子(所谓的三层嵌套写法),SELECT*FROM(SELECTa.*&nbs..
一般的分页写法大概就是下面的样子(所谓的“三层嵌套”写法),
在遇到显示数据表中1百万行以后的记录时,美国服务器,可能会出现性能问题。有人提出的解决方案是利用索引,首先通过扫描索引查出rowid,然后再通过rowid查出所需记录。这样做的问题是如果没有索引怎么办?以Oracle为例,下面是一个更具有一般意义的高效写法:
优化的思想是跳到第1百万位置时只是扫描了rowid,避免了扫描全部字段。当字段个数较多时,速度会有十倍的提升。本例在普通的设备上运行不到1秒就出来结果了。这一方法在千万级或亿级仍然存在问题,其原因在于循环次数并未减少。如果真有rwd这样一个字段,那么通过索引和分区等手段,也能够确保速度。不过,话又说回来,美国空间,分页显示成百上千万条记录这样的事情,虚拟主机,其欲达到的业务目的本身可否有更好的解决之道呢?
本文出自 “iData” 博客,请务必保留此出处
推荐阅读
-
以某课网日志分析为例 进入大数据 Spark SQL 的世界
-
oracle数据库中慢SQL的优化过程(awr报表为例)
-
ORACLE最高效的分页之分页查询SQL语法实例详解
-
以某课网日志分析为例 进入大数据 Spark SQL 的世界
-
JavaScript获取图片的原始尺寸以宽度为例_javascript技巧
-
php批量删除数据库下指定前缀的表以prefix_为例_php技巧
-
JavaScript获取图片的原始尺寸以宽度为例_javascript技巧
-
SQL分页排序的实现与分页数据重复问题以Oracle rownum为例
-
php批量删除数据库下指定前缀的表以prefix_为例_php技巧
-
oracle数据库中慢SQL的优化过程(awr报表为例)