有没有办法强制SQL Server在查询中使用最近数据的样本?

时间:2017-09-01 15:14:36

标签: sql sql-server tsql sql-server-2008-r2

据我所知,SQL Server根据表数据样本估算基数。我们有一个每日付款对帐报告,间歇性地生成错误的执行计划。

据我所知,这部分是由于计划中的基数估计不好。我想知道是否有办法强制查询生成用于进行基数估计的样本,偏向最近插入/更新的行或更高数字的主键(也就是更新的)。

如果有办法在表级或数据库级别执行此操作,我也会对此感兴趣。

1 个答案:

答案 0 :(得分:2)

看看"参数嗅探"和SQL中的OPTIMIZE FOR功能。它允许您调整SQL为重用代码(视图,TVF等)生成查询计划的方式:

SELECT *
FROM ImportLog
WHERE StateCode = @StateCode
OPTION(OPTIMIZE FOR (@StateCode = 'CA'));