我想知道 Oracle 中的解释计划成本是否总是确定特定查询是否比其他查询最有效(在性能、资源使用、磁盘访问等方面)?
我的问题是因为我有两张桌子。
- 一个带有本地分区索引。
- 另一个具有全局分区索引。
两者具有相同的结构和相同的数据。然后我有一个查询,成本明显不同。全局分区索引一的成本非常低,而本地分区索引一的成本非常高。但是,当我在 SQL Developer 中运行查询时,具有全局分区索引的表的响应时间更高。
谢谢。
我想知道 Oracle 中的解释计划成本是否总是确定特定查询是否比其他查询最有效(在性能、资源使用、磁盘访问等方面)?
我的问题是因为我有两张桌子。
两者具有相同的结构和相同的数据。然后我有一个查询,成本明显不同。全局分区索引一的成本非常低,而本地分区索引一的成本非常高。但是,当我在 SQL Developer 中运行查询时,具有全局分区索引的表的响应时间更高。
谢谢。
两个不同的 SQL 语句之间的成本不可比。不能也不应该推断出更高的成本 = 更高的运行时间或 IO/CPU 使用率。
成本只是 oracle 在计算特定 sql 语句的所有可能 sql 计划时应用的内部排名。如您所见,一条低成本的 sql 比高成本的 sql 运行时间更长。成本数字受到很多因素的影响,例如 sql 提示(first_rows 等)、表统计信息、系统级统计信息(负载统计信息,或在 optimizer_index_cost_adj/optimizer_index_caching 上设置不同的数字等)。
始终按 IO/CPU 调整 SQL(即实际资源使用情况)。真的忽略“成本”。
也见这里:http ://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:313416745628