Oracle中使用Rownum分页详细例子
在MySQL中,我们通常都使用limit来完成数据集获取的分页操作,而在Oracle数据库中,并没有类似limit一样的方便方法来实现分页,因此我们通常都是直接在SQL语句中完成分页,这里就需要借助于rownum伪列或row_number()函数了,本文将分别展示使用rownum伪列和row_number()分析函数来完成Oracle数据分页操作的具体使用方法,并分析和比较两者的性能优劣。
一、初始化测试数据
首先测试数据我选取了数据字典all_objects表中的70000条数据,创建步骤如下:
--为了方便验证结果集以及避免不必要的排序,这里我直接使用了rownum来产生了有序的OBJECT_ID列 SQL>createtablemy_objectsas 2selectrownumasOBJECT_ID,OBJECT_NAME,OBJECT_TYPE 3fromall_objectswhererownum<70001;
Tablecreated.
--对OJBECT_ID列建立主键 SQL>altertablemy_objectsaddprimarykey(object_id);
Tablealtered.
SQL>selectcount(*)frommy_objects;
COUNT(*) ---------- 70000
--分析该表 SQL>execdbms_stats.gather_table_stats(user,'my_objects',cascade=>TRUE);
PL/SQLproceduresuccessfullycompleted.