我正在执行一系列带有“IN”子句的查询,其中有许多指定的值,就像这样:
SELECT
[time_taken], [distance], [from_location_geocode_id],
[to_location_geocode_id]
FROM
[Travel_Matrix]
WHERE
[from_location_geocode_id] IN (@param1, @param2, @param3, @param4, @param5)
AND [to_location_geocode_id] IN (@param1, @param2, @param3, @param4, @param5)
示例显示了5个参数,但实际上可能有数百个参数。
对于少量参数(大约400个以下),SQL Server使用一个带有多个“计算标量”操作的执行计划,然后将其连接、排序和合并以返回结果。
对于大量参数(超过400个),它使用更快的“哈希匹配(右半连接)”方法。
不过,我希望它在查询有50个参数时尽早使用第二种执行计划,因为我的测试表明,查询有50到400个参数的速度很慢。
我已经尝试使用各种查询的“OPTION”值,但无法让它使用第二种执行计划,我知道这将更有效率。
我将感激任何能够提供正确提示的人,以便查询以第二种执行计划的方式执行。
谢谢。