首先准备一张百万条数据的表, 这样分析数据差距更形象!
下面用分页表数据对表进行分析, 根据 EMP_ID 字段排序, 使用索引和不使用索引性能差距!
sql 查询语法准备, 具体业务根据具体表书写 sql 语法:
- SELECT *
- FROM (SELECT ROW_.*, ROWNUM ROWNUM_
- FROM (SELECT *
- FROM KQS_SQ_INFO i
- ORDER BY i.EMP_ID desc ) ROW_
- WHERE ROWNUM <= 20)
- WHERE ROWNUM_>= 10;
使用 explain plan for 可以分析 sql
如下:
- explain plan for SELECT *
- FROM (SELECT ROW_.*, ROWNUM ROWNUM_
- FROM (SELECT *
- FROM KQS_SQ_INFO i
- ORDER BY i.EMP_ID desc ) ROW_
- WHERE ROWNUM <= 20)
- WHERE ROWNUM_>= 10;
计算出 SQL 性能, 使用
select * from TABLE(dbms_xplan.display); 打印出性能分析表
如下图:
使用索引前:
使用索引后
可以清晰看到使用后 CPU 使用率很低, 并且检索是从索引开始而不是全文检索
来源: https://www.cnblogs.com/shihaibin821/p/9772026.html