一个SQL 语句,为什么执行计划不一样
展开全部
如果你的执行计划没有固化,那么两次执行就可能存在不同。
(1)读取数据方式不同
第一次执行需要读取数据,甚至是部分物理读。
第二次执行就基本都是逻辑读了。
(2)机器负载不同
服务器选择叫做最优化的方式,是最低成本消耗。如果你的服务器现在很忙,那么最低成本消耗就是尽量少的占用cpu和内存
如果服务器现在很闲,那么最低成本消耗的条件可能发生一些改变,从而导致执行计划不同。
(3)数据量原因
如果数据量突然大量增加或减少,又或者在带有统计信息的数据库上统计信息没有跟上数据量的变化,那么就可能出现这种状况。
当然可能还有其他原因(比如数据库发生一些变化,如长连接,常驻表等等),如果希望执行计划固化,那么就设置该语句的固定执行计划,网上有设置方式的。
(1)读取数据方式不同
第一次执行需要读取数据,甚至是部分物理读。
第二次执行就基本都是逻辑读了。
(2)机器负载不同
服务器选择叫做最优化的方式,是最低成本消耗。如果你的服务器现在很忙,那么最低成本消耗就是尽量少的占用cpu和内存
如果服务器现在很闲,那么最低成本消耗的条件可能发生一些改变,从而导致执行计划不同。
(3)数据量原因
如果数据量突然大量增加或减少,又或者在带有统计信息的数据库上统计信息没有跟上数据量的变化,那么就可能出现这种状况。
当然可能还有其他原因(比如数据库发生一些变化,如长连接,常驻表等等),如果希望执行计划固化,那么就设置该语句的固定执行计划,网上有设置方式的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询