Oracle解释计划:基数返回一个庞大的数字,但查询不返回任何记录

Vic*_*tor 5 oracle11g sql-execution-plan

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

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

我的第一个问题是,如果数字较低,它会自动意味着更好的表现吗?哪个数字最适合?成本/基数/字节?我的第二个问题是:我理解基数是读取的行数.但是当我运行查询时,它返回'0'行!我的印象是,对于应该返回相同结果集的两个查询,基数必须相同.我觉得这是错的?

小智 4

成本、字节、基数……所有这些都是根据优化器的统计数据等输入进行的估计。所以它们自动没有任何意义,但可以提供一个想法。用Oracle性能调优指南的话来说“最好使用EXPLAIN PLAN来确定访问计划,然后通过测试证明它是最优计划。在评估计划时,检查该语句的实际资源消耗。”

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