甲骨文解释过的计划何时被认为是好的?我正在尝试重构数据库模式,并且视图和程序包中的查询是如此之慢。
例如,这是最糟糕的查询之一,并给出以下解释计划:
计划ALL_ROWSC费用:18,096字节:17基数:1
我不问如何解决查询,只是问如何认为解释计划是好的。谢谢!!
在考虑解释计划的结果之前,我们需要了解以下术语,即基数-估计每个操作产生的行数 .访问方法''-通过任一方法访问数据的方式表扫描或索引访问。“联接方法”。用于将表彼此联接的方法(例如,哈希,排序合并等)。―连接类型―连接的类型(例如,外部,反,半等)。连接顺序’‘。表相互连接的顺序 .分区修剪''。是否仅访问必要的分区来回答查询?并行执行’‘。在并行执行的情况下,每个计划中的操作是否正在并行进行?是否使用了正确的数据重新分配方法?
访问方法''-通过任一方法访问数据的方式表扫描或索引访问。“联接方法”。用于将表彼此联接的方法(例如,哈希,排序合并等)。―连接类型―连接的类型(例如,外部,反,半等)。
分区修剪''。是否仅访问必要的分区来回答查询?
通过审查以下四个关键要素:基数估计,访问方法,联接方法和联接顺序;您可以确定执行计划是否是最佳的可用计划。本白皮书将为您提供帮助,http://www.oracle.com/technetwork/database/focus- areas/bi-datawarehousing/twp-explain-the-explain- plan-052011-393674.pdf