具有较低成本的SQL查询比具有较高成本的查询运行得慢

问题描述 投票:0回答:1

我在DB2数据库上的SQL查询上运行执行计划以进行两次查询。第一个查询的成本约为380000.通过用子查询替换一些内部联接来修改查询后,成本降低到312(注意:不是312000,只是312)

但是,在运行每个查询乘以次数后,较大的查询平均运行得更快。这可能是什么原因?

sql db2 sql-execution-plan
1个回答
1
投票

对于使用基于成本的优化器的任何数据库,成本都是估算值。如果估计是正确的,则查询的成本与运行时之间应该存在相关性。然而,有时候,估计是偏离的。而且一般来说,您更有可能查看优化程序估计偏离的查询,因为当估计偏离计划很可能很糟糕时,查询将会运行缓慢,并且某人是要抱怨人们通常不会查看优化程序估计值正确的99%的查询。

听起来好像在这种情况下优化器的成本估算是偏离的。最有可能的原因是,某些表,索引或列上的统计信息不正确。当然,可能还有其他问题 - 可能会发现缓存中的行数比例大幅下降,或者磁盘I / O比实际价格高得多或者低得多(即您的I / O子系统承受着巨大的压力)并且速度很慢或者您拥有固态磁盘上的所有内容,因此I / O非常快。但我总是从查看统计数据开始。

© www.soinside.com 2019 - 2024. All rights reserved.