我编写了一个复杂的oracle sql查询,解释计划统计信息如下所示: 费用:209,201字节:187,944,150基数:409,675
现在,DBA调整了查询,统计信息如下所示: 费用:42,996字节:89,874,138基数:209,226
我的第一个问题是,如果数字较低,它会自动意味着更好的表现吗? 哪个数字最适合?成本/基数/字节? 我的第二个问题是:我理解基数是读取的行数。但是当我运行查询时,它返回'0'行! 我的印象是,对于应该返回相同结果集的两个查询,基数必须相同。我想这是错的?
答案 0 :(得分:4)
成本,字节,基数......所有都是根据输入的估计,例如给予优化器的统计数据。所以他们自动意味着什么,但可以提出一个想法。在Oracle性能调优指南中,“最好使用EXPLAIN PLAN来确定访问计划,然后通过测试证明它是最佳计划。在评估计划时,检查语句的实际资源消耗。”
对于第二个问题:理论上等效的查询应该返回相同的基数。你的桌子的统计数据可能很旧。