5

我编写了一个复杂的 oracle sql 查询,解释计划统计信息如下所示:成本:209,201 字节:187,944,150 基数:409,675

现在 DBA 调整了查询​​,统计数据如下所示: 成本:42,996 字节:89,874,138 基数:209,226

我的第一个问题是,如果数字较低,是否自动意味着更好的性能?哪个数字最相关?成本/基数/字节?我的第二个问题是:我理解基数是读取的行数。但是当我运行查询时,它返回“0”行!我的印象是,对于两个应该返回相同结果集的查询,基数必须相同。这我猜是错的?

4

1 回答 1

4

成本、字节、基数……都是根据输入(如提供给优化器的统计信息)的估计。所以他们自然而然地毫无意义,但可以给出一个想法。用 Oracle Performance Tuning Guide 的话说“最好使用 EXPLAIN PLAN 来确定一个访问计划,然后通过测试证明它是最优计划。在评估计划时,检查语句的实际资源消耗。”

对于第二个问题:理论上等效的查询应该返回相同的基数。您的表格的静态数据可能已经过时了。

于 2013-02-25T15:00:16.000 回答