当一个预言机解释计划被认为是好的?我正在尝试重构 DB Schema,并且视图中有很多查询和非常慢的包。
例如,这是最糟糕的查询之一,给我这个解释计划:
计划 ALL_ROWS成本:18,096 字节:17 基数:1
我不问如何修复查询,只问如何认为解释计划很好。谢谢!!
当一个预言机解释计划被认为是好的?我正在尝试重构 DB Schema,并且视图中有很多查询和非常慢的包。
例如,这是最糟糕的查询之一,给我这个解释计划:
计划 ALL_ROWS成本:18,096 字节:17 基数:1
我不问如何修复查询,只问如何认为解释计划很好。谢谢!!
成本估算是根据预言机对需要访问多少块才能回答您的查询的猜测。18,096 是个好数字吗?这取决于你在做什么、你的服务器有多快以及你需要它多快运行。这个数字作为绝对值没有什么意义。
如果您更改 SQL 或和索引并且成本估算下降,这是一个好兆头,但真正重要的是它实际损坏的时间。甲骨文有时会做出错误的估计。
话虽如此,对于在用户等待时运行的东西来说它看起来有点高,但对于批处理作业来说是合理的。
在考虑解释计划的结果之前,我们需要了解以下术语,基数——估计每个操作产生的行数。
• 访问方法——通过表扫描或索引访问来访问数据的方式。• 连接方法——用于将表相互连接的方法(例如,散列、排序合并等)。• 连接类型– 连接类型(例如,外、反、半等)。• 连接顺序– 表相互连接的顺序。
• 分区修剪——是否只访问必要的分区来回答查询?
• 并行执行——在并行执行的情况下,计划中的每个操作是否并行执行?是否使用了正确的数据重新分配方法?
通过回顾四个关键要素:基数估计、访问方法、连接方法和连接顺序;您可以确定执行计划是否是最佳可用计划。本白皮书将对您有所帮助,http://www.oracle.com/technetwork/database/focus-areas/bi-datawarehousing/twp-explain-the-explain-plan-052011-393674.pdf