高效分页的SQL技巧(以Oracle为例)
一般的分页写法大概就是下面的样子(所谓的“三层嵌套”写法),
- SELECT *
- FROM (SELECT a.*
- ,rownum rn
- FROM (SELECT * FROM table_name) a
- WHERE rownum <= 40)
- WHERE rn >= 21
在遇到显示数据表中1百万行以后的记录时,可能会出现性能问题。有人提出的解决方案是利用索引,首先通过扫描索引查出rowid,然后再通过rowid查出所需记录。这样做的问题是如果没有索引怎么办?以Oracle为例,下面是一个更具有一般意义的高效写法:
- SELECT *
- FROM <your table name> t
- WHERE ROWID IN (SELECT rwd
- FROM (SELECT t.rowid rwd
- ,rownum n
- FROM <your table name> t
- WHERE rownum <= 1000000 + 10)
- WHERE n >= 1000000)
优化的思想是跳到第1百万位置时只是扫描了rowid,避免了扫描全部字段。当字段个数较多时,速度会有十倍的提升。本例在普通的设备上运行不到1秒就出来结果了。这一方法在千万级或亿级仍然存在问题,其原因在于循环次数并未减少。如果真有rwd这样一个字段,那么通过索引和分区等手段,也能够确保速度。不过,话又说回来,分页显示成百上千万条记录这样的事情,其欲达到的业务目的本身可否有更好的解决之道呢?
高效分页的SQL技巧(以Oracle为例)相关推荐
- oracle分页查询sql语句通用,oracle分页查询sql语句,oracle分页查询sql语句详解
oracle分页查询sql语句,oracle分页查询sql语句详解,Oracle分页查询sql语句 Oracle中分页和MySql中的分页不同,MySql中的分页使用关键字limit即可,相对简单一点 ...
- oracle如何高效分页,oracle学习之高效分页存储过程实例
oracle学习之高效分页存储过程实例 时间:2017-07-11 来源: create or replace package p_page is -- Author : PHARAOHS -- Cr ...
- oracle万能分页代码,oracle高效分页存储过程代码
oracle高效分页存储过程代码 create or replace package p_page is -- author : pharaohs -- created : 2006-4-30 14: ...
- sql server与oracle的分页,详解SQLServer和Oracle的分页查询
不管是DRP中的分页查询代码的实现还是面试题中看到的关于分页查询的考察,都给我一个提示:分页查询是重要的.当数据量大的时候是必须考虑的.之前一直没有花时间停下来好好总结这里.现在又将Oracle视频中 ...
- oracle的分页查询怎么写,ORACLE分页查询SQL语法
ORACLE分页查询SQL语法 --1:无ORDER BY排序的写法.(效率最高) --(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!) S ...
- Oracle分页查询sql语句
1.oracle中的分页查询sql语句基本可以按照如下的模板来改写: SELECT *FROM (SELECT A.*, ROWNUM RNFROM (SELECT * FROM TABLE_NAME ...
- oracle mysql limit用法_mysql以及oracle数据分页的sql示例(limit和Rownum的用法) | Soo Smart!...
对数据查询结果集截断获取,来实现数据库层的分页.在mysql以及Oracle下的实现如下: MySQL下使用limit和offset,Oracle使用Rownum. MySQL下limit和offse ...
- SQL Server 与 ORACLE 的区别
sql server 与 oracle的区别: DBMS 数据库管理系统 1.数据类型不同. sql server 的数据类型:int ,smallint ,char,varchar,nc ...
- php+mysql 大容量数据高效分页效果(弃用limit)
发现当表中有很多上万条数据时,越后的数据用limit分页显示就越慢(>2秒),可能是mysql的特性所致.所以花了点时间总结实现了更优解决方案,最终实现毫秒级响应.若网友有更优的,请留言,谢谢! ...
最新文章
- oracel 服务详细介绍
- golang 使用 http socks5 代理
- python模块引用
- 2021春季每日一题 【week2 未完结】
- 姗姗来迟的Ubuntu版MX4,已经没了当年的初衷
- linux讲解系列:激活script
- catia曲面扫掠命令详解_Mastercam快捷键命令,附中英文功能讲解!值得收藏!
- ASP.NET Core分布式项目实战(详解oauth2授权码流程)--学习笔记
- 背板,线速,交换容量详细解说
- 发送和接收_通用异步接收器/发送器(UART)
- cgic 测试demo
- WPS检测到字体缺失Windows字体包方正字体库
- 硬件与分析-音速小子
- Ubuntu 18.04 LTS版本 GoldenDict安装与配置
- 775针服务器cpu性能排行,775针cpu排行榜说明
- 《3D数学基础》1.7 向量的向量积
- 【python教程入门学习】拒绝反爬虫!教你搞定爬虫验证码
- 【欣赏】一组唯美的图片
- 论文阅读 Safe Local Exploration for Replanning in Cluttered Unknown Environments
- 删除域中的Exchange服务器