
作者:马立和 高振娇 韩锋
来源:大数据DT(ID:hzdashuju)
内容摘编自《数据库高效优化:架构、规范与SQL技巧》
select table_name,index_name,leaf_blocks,num_rows,clustering_factor from user_indexes where table_name in ('T1','T2'); TABLE_NAME INDEX_NAME LEAF_BLOCKS NUM_ROWS CLUSTERING_FACTOR -------------- -------------- ---------------- ---------- --------------------- T1 SYS_C0025294 6275 3200000 31520 T2 SYS_C0025295 13271 3200000 632615
select * from t2 where id between '3199990' and '3200000'; -------------------------------------------------------------------------------- | Id | Operation | Name |Rows|Bytes |Cost(%CPU)| Time | -------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 6| 390 | 5 (0)|00:00:01| | 1 | TABLE ACCESS BY INDEX ROWID| T2 | 6| 390 | 5 (0)|00:00:01| |* 2 | INDEX RANGE SCAN | SYS_C0025295 | 6| | 3 (0)|00:00:01| -------------------------------------------------------------------------------- Statistics ---------------------------------------------------------- 1 recursive calls 0 db block gets 13 consistent gets 0 physical reads
案例03 规范SQL写法好处多
1. 案例说明select ... from ... where ( ( order_creation_date>= to_date(20120208,'yyyy-mm-dd') and order_creation_date<to_date(20120209,'yyyy-mm-dd') ) or ( send_date>= to_date(20120208,'yyyy-mm-dd') and send_date<to_date(20120209, 'yyyy-mm-dd') ) ) andnvl(a.bd_id,0) = 1 -------------------------------------------------------------------------------- | Id | Operation | Name |Cost (%CPU)| Time |Pstart | Pstop | -------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 2470K(100)| | | | | 1 | SORT GROUP BY | | | | | | | 2 | TABLE ACCESS BY GLOBAL INDEX ROWID | XXXX | 5 (0) | 00:00:01 | ROW L | ROW L | | 3 | NESTED LOOPS | | 2470K (1) | 08:14:11 | | | | 4 | VIEW |VW_NSO_1| 2470K (1) | 08:14:10 | | | | 5 | FILTER | | | | | | | 6 | HASH GROUP BY | | 2470K (1)| 08:14:10 | | | | 7 | TABLE ACCESS BY GLOBAL INDEX ROWID | XXXX | 5 (0)| 00:00:01 | ROW L | ROW L | | 8 | NESTED LOOPS | | 2470K (1)| 08:14:10 | | | | 9 | SORT UNIQUE | | 2340K (2)| 07:48:11 | | | | 10 | PARTITION RANGE ALL | | 2340K (2)| 07:48:11 | 1 | 92 | | 11 | TABLE ACCESS FULL | XXXX | 2340K (2)| 07:48:11 | 1 | 92 | | 12 | INDEX RANGE SCAN | XXXX | 3 (0)| 00:00:01 | | | | 13 | INDEX RANGE SCAN | XXXX | 3 (0)| 00:00:01 | | | --------------------------------------------------------------------------------
select ... from ... where order_creation_date >= to_date(20120208,'yyyy-mm-dd') and order_creation_date<to_date(20120209,'yyyy-mm-dd') union all select ... from ... where send_date>= to_date(20120208,'yyyy-mm-dd') and send_date<to_date(20120209,'yyyy-mm-dd') and nvl(a.bd_id,0) = 5
select ... from ... where ( ( order_creation_date>= to_date(20120208,'yyyymmdd') and order_creation_date<to_date(20120209,'yyyymmdd') ) or ( send_date>= to_date(20120208,'yyyymmdd') and send_date<to_date(20120209,'yyyymmdd') ) ); -------------------------------------------------------------------------------- | Id | Operation | Name | Cost(%CPU)|Time | Pstart | Pstop | -------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 42358 (1)| 00:08:29 | | | | 1 | SORT AGGREGATE | | | | | | | 2 | CONCATENATION | | | | | | | 3 | PARTITION RANGE SINGLE | | 17393 (1)| 00:03:29 | 57 | 57 | |* 4 | TABLE ACCESS FULL | XXXX | 17393 (1)| 00:03:29 | 57 | 57 | |* 5 | TABLE ACCESS BY GLOBAL INDEX ROWID | XXXX | 24966 (1)| 00:05:00 | ROWID | ROWID | |* 6 | INDEX RANGE SCAN | XXXX | 658 (1)| 00:00:08 | | | ---------------------------------------------------------------------------------
select... from xxx a join xxx b on a.order_id = b.lyywzdid left join xxx c on b.gysid = c.gysid whereb.cdate>= to_date('2012-03-31', 'yyyy-mm-dd') – 3 and ... a.send_date>= to_date('2012-03-31', 'yyyy-mm-dd') - 1 and a.send_date<to_date('2012-03-31', 'yyyy-mm-dd'); -------------------------------------------------------------------------------- |Id | Operation |Name | Rows | Bytes | Cost (%CPU) |Pstart|Pstop| -------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 104 | 9743(1)| | | | 1 | HASH JOIN OUTER | | 1 | 104 | 9743(1)| | | | 2 | TABLE ACCESS BY LOCAL INDEX ROWID | XXXX | 1 | 22 | 0(0)| 1189 | 1189| | 3 | NESTED LOOPS | | 1 | 94 | 9739(1)| | | | 4 | PARTITION RANGE ITERATOR | | 1032 | 74304 | 9739(1)| 123 | 518 | | 5 | TABLE ACCESS FULL | XXXX | 1032 | 74304 | 9739(1)| 123 | 518 | | 6 | PARTITION RANGE SINGLE | | 1 | | 0(0)| 1189 | 1189 | | 7 | INDEX RANGE SCAN | XXXX | 1 | | 0(0)| 1189 | 1189 | | 8 | TABLE ACCESS FULL | XXXX | 183 | 1830 | 3(0)| | | --------------------------------------------------------------------------------
exec dbms_stats.gather_index_stats( ownname=>'xxx', indname=>'xxx', partname=>'PART_xxx', estimate_percent => 10);
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
当 “算法” 成为数据科学、人工智能、业务决策领域的高频词时,一种隐形的认知误区正悄然蔓延 —— 有人将分析结果不佳归咎于 ...
2025-09-22在数据分析、金融计算、工程评估等领域,“平均数” 是描述数据集中趋势最常用的工具之一。但多数人提及 “平均数” 时,默认指 ...
2025-09-22CDA 数据分析师:参数估计助力数据决策的核心力量 在数字化浪潮席卷各行各业的当下,数据已成为驱动业务增长、优化运营效率的核 ...
2025-09-22训练与验证损失骤升:机器学习训练中的异常诊断与解决方案 在机器学习模型训练过程中,“损失曲线” 是反映模型学习状态的核心指 ...
2025-09-19解析 DataHub 与 Kafka:数据生态中两类核心工具的差异与协同 在数字化转型加速的今天,企业对数据的需求已从 “存储” 转向 “ ...
2025-09-19CDA 数据分析师:让统计基本概念成为业务决策的底层逻辑 统计基本概念是商业数据分析的 “基础语言”—— 从描述数据分布的 “均 ...
2025-09-19CDA 数据分析师:表结构数据 “获取 - 加工 - 使用” 全流程的赋能者 表结构数据(如数据库表、Excel 表、CSV 文件)是企业数字 ...
2025-09-19SQL Server 中 CONVERT 函数的日期转换:从基础用法到实战优化 在 SQL Server 的数据处理中,日期格式转换是高频需求 —— 无论 ...
2025-09-18MySQL 大表拆分与关联查询效率:打破 “拆分必慢” 的认知误区 在 MySQL 数据库管理中,“大表” 始终是性能优化绕不开的话题。 ...
2025-09-18DSGE 模型中的 Et:理性预期算子的内涵、作用与应用解析 动态随机一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明确:TIF 中的地名有哪两种存在形式? 在开始提取前,需先判断 TIF 文件的类型 —— ...
2025-09-17CDA 数据分析师:解锁表结构数据特征价值的专业核心 表结构数据(以 “行 - 列” 规范存储的结构化数据,如数据库表、Excel 表、 ...
2025-09-17Excel 导入数据含缺失值?详解 dropna 函数的功能与实战应用 在用 Python(如 pandas 库)处理 Excel 数据时,“缺失值” 是高频 ...
2025-09-16深入解析卡方检验与 t 检验:差异、适用场景与实践应用 在数据分析与统计学领域,假设检验是验证研究假设、判断数据差异是否 “ ...
2025-09-16CDA 数据分析师:掌控表格结构数据全功能周期的专业操盘手 表格结构数据(以 “行 - 列” 存储的结构化数据,如 Excel 表、数据 ...
2025-09-16MySQL 执行计划中 rows 数量的准确性解析:原理、影响因素与优化 在 MySQL SQL 调优中,EXPLAIN执行计划是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 对象的 text 与 content:区别、场景与实践指南 在 Python 进行 HTTP 网络请求开发时(如使用requests ...
2025-09-15CDA 数据分析师:激活表格结构数据价值的核心操盘手 表格结构数据(如 Excel 表格、数据库表)是企业最基础、最核心的数据形态 ...
2025-09-15Python HTTP 请求工具对比:urllib.request 与 requests 的核心差异与选择指南 在 Python 处理 HTTP 请求(如接口调用、数据爬取 ...
2025-09-12解决 pd.read_csv 读取长浮点数据的科学计数法问题 为帮助 Python 数据从业者解决pd.read_csv读取长浮点数据时的科学计数法问题 ...
2025-09-12