分页语句创建索引技巧
来源:互联网 发布:做淘宝运营对数据分析 编辑:程序博客网 时间:2024/05/18 16:18
SQL> select * from (select rownum as rn, a.* from (select * from t100 a where object_id > 1500 and owner = 'SYSTEM' order by object_id desc) a where rownum <= 40) a where rn >= 1;SQL> select count(*) from t100; COUNT(*)---------- 12083584SQL> select count(*) from t100 where owner='SYSTEM'; COUNT(*)---------- 79232SQL> select count(*) from t100 a where owner = 'SYSTEM' and object_name like '%LOG%' 2 3 4 5 ; COUNT(*)---------- 39168---特殊执行计划:11G:set linesize 200;set pagesize 200;alter session set statistics_level=all; ---再运行SQLSQL> select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));创建索引1:SQL> select count(*) from t100 where owner='SYSTEM'; COUNT(*)---------- 79232SQL> create index t100_idx1 on t100(owner,object_id);select * from (select rownum as rn, a.* from (select * from t100 a where owner = 'SYSTEM' and object_name like '%LOG%' order by object_id desc) a where rownum <= 40) a where rn >= 1执行计划----------------------------------------------------------Plan hash value: 2240177993---------------------------------------------------------------------------------------------| Id | Operation| Name | Rows | Bytes | Cost (%CPU)| Time |---------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT| | 40 | 8800 | 45 (0)| 00:00:01 ||* 1 | VIEW| | 40 | 8800 | 45 (0)| 00:00:01 ||* 2 | COUNT STOPKEY | | | | | || 3 | VIEW | | 41 | 8487 | 45 (0)| 00:00:01 || 4 | TABLE ACCESS BY INDEX ROWID | T100 |425K| 39M| 45 (0)| 00:00:01 ||* 5 | INDEX RANGE SCAN DESCENDING| T100_IDX1 | 41 | | 3 (0)| 00:00:01 |---------------------------------------------------------------------------------------------Predicate Information (identified by operation id):--------------------------------------------------- 1 - filter("RN">=1) 2 - filter(ROWNUM<=40) 5 - access("OWNER"='SYSTEM' AND "OBJECT_ID">1500 AND "OBJECT_ID" IS NOT NULL)统计信息---------------------------------------------------------- 1 recursive calls 0 db block gets 46 consistent gets 0 physical reads 0 redo size 2529 bytes sent via SQL*Net to client541 bytes received via SQL*Net from client 4 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 40 rows processed创建索引2:SQL> create index t100_idx2 on t100(owner,object_name,object_id);执行计划----------------------------------------------------------Plan hash value: 3889701471-----------------------------------------------------------------------------------------------------| Id | Operation| Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |-----------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT| | 40 | 8800 | | 24854 (1)| 00:04:59 ||* 1 | VIEW| | 40 | 8800 | | 24854 (1)| 00:04:59 ||* 2 | COUNT STOPKEY | | | | | | || 3 | VIEW | | 21578 | 4361K| | 24854 (1)| 00:04:59 ||* 4 | SORT ORDER BY STOPKEY| | 21578 | 2044K| 2840K| 24854 (1)| 00:04:59 || 5 | TABLE ACCESS BY INDEX ROWID| T100 | 21578 | 2044K| | 24372 (1)| 00:04:53 ||* 6 | INDEX RANGE SCAN| T100_IDX2 | 21578 | | | 2790 (1)| 00:00:34 |-----------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):--------------------------------------------------- 1 - filter("RN">=1) 2 - filter(ROWNUM<=40) 4 - filter(ROWNUM<=40) 6 - access("OWNER"='SYSTEM') filter("OBJECT_NAME" LIKE '%LOG%' AND "OBJECT_NAME" IS NOT NULL)统计信息---------------------------------------------------------- 28 recursive calls 0 db block gets 39661 consistent gets464 physical reads 0 redo size 2543 bytes sent via SQL*Net to client541 bytes received via SQL*Net from client 4 SQL*Net roundtrips to/from client 7 sorts (memory) 0 sorts (disk) 40 rows processed创建索引3:SQL> create index t100_idx3 on t100(object_id,owner);索引已创建。执行计划----------------------------------------------------------Plan hash value: 1672976351--------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |--------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | |40 | 8800 | 872 (0)| 00:00:11 ||* 1 | VIEW | |40 | 8800 | 872 (0)| 00:00:11 ||* 2 | COUNT STOPKEY | | | || || 3 | VIEW | |40 | 8280 | 872 (0)| 00:00:11 ||* 4 | TABLE ACCESS BY INDEX ROWID| T100 | 21578 | 2044K| 872 (0)| 00:00:11 ||* 5 | INDEX FULL SCAN DESCENDING| T100_IDX3 | 800 | |71 (0)| 00:00:01 |--------------------------------------------------------------------------------------------Predicate Information (identified by operation id):--------------------------------------------------- 1 - filter("RN">=1) 2 - filter(ROWNUM<=40) 4 - filter("OBJECT_NAME" LIKE '%LOG%' AND "OBJECT_NAME" IS NOT NULL) 5 - access("OWNER"='SYSTEM') filter("OWNER"='SYSTEM')统计信息---------------------------------------------------------- 1 recursive calls 0 db block gets 33730 consistent gets 32022 physical reads 0 redo size 2543 bytes sent via SQL*Net to client541 bytes received via SQL*Net from client 4 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 40 rows processed创建索引4:select * from (select rownum as rn, a.* from (select * from t100 a where owner = 'SYSTEM' and object_name like '%LOG%' order by object_id desc) a where rownum <= 40) a where rn >= 1SQL> create index t100_idx4 on t100(object_id,owner,object_name);执行计划----------------------------------------------------------Plan hash value: 1439634448--------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |--------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | |40 | 8800 | 189 (0)| 00:00:03 ||* 1 | VIEW | |40 | 8800 | 189 (0)| 00:00:03 ||* 2 | COUNT STOPKEY | | | || || 3 | VIEW | |40 | 8280 | 189 (0)| 00:00:03 || 4 | TABLE ACCESS BY INDEX ROWID| T100 | 21578 | 2044K| 189 (0)| 00:00:03 ||* 5 | INDEX FULL SCAN DESCENDING| T100_IDX4 |40 | | 148 (0)| 00:00:02 |--------------------------------------------------------------------------------------------Predicate Information (identified by operation id):--------------------------------------------------- 1 - filter("RN">=1) 2 - filter(ROWNUM<=40) 5 - access("OWNER"='SYSTEM') filter("OWNER"='SYSTEM' AND "OBJECT_NAME" LIKE '%LOG%' AND "OBJECT_NAME" IS NOT NULL)统计信息---------------------------------------------------------- 1 recursive calls 0 db block gets 68683 consistent gets 68639 physical reads 0 redo size 2543 bytes sent via SQL*Net to client541 bytes received via SQL*Net from client 4 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 40 rows processed结论: 分页SQL 创建索引 where 列+ order by列
0 0
- 分页语句创建索引技巧
- SQL语句-创建索引
- SQLServer 语句-创建索引
- SQL语句-创建索引
- SQLServer 语句-创建索引
- SQL语句-创建索引
- SQL语句-创建索引
- SQLServer 语句-创建索引
- mysql 创建索引语句
- DB2 创建索引语句
- mysql创建索引技巧
- 分页SQL创建索引规则
- 提取创建索引的语句
- sql语句创建全文索引
- T-SQL语句创建索引
- SQL创建表索引语句
- sql语句创建唯一索引
- 缺失索引自动创建语句
- Talented Chef
- 多线程编程1 - NSThread
- Android酷炫开源动框架2015-2016双年榜
- 01-从Java到Golang快速入门
- 常见面试之机器学习算法思想简单梳理
- 分页语句创建索引技巧
- 集合框架_Collections工具类的常见方法讲解
- linux_echo_内核态服务器
- 前端学习day02
- poj 1191 棋盘分割
- What day is that day?(打表找周期)
- 微信小程序开发视频教程
- jQuery ajax - load() 方法 回调函数以及如何得到回调结果中需要的数据值
- DAO模式