gpt4 book ai didi

sql-server - 带有大量 IN 参数的 SQL 查询速度很慢

转载 作者:行者123 更新时间:2023-12-03 02:08:16 25 4
gpt4 key购买 nike

我正在执行多个查询,其中的许多值在“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”值,但无法使用第二个执行计划来执行它,我知道第二个执行计划会更有效。

如果有人能够建议如何为查询提供正确的提示,以便它以第二个执行计划的方式执行,我将不胜感激。

谢谢

最佳答案

我认为使用 IN 子句的 400 个参数太多了。您最好将这些值存储在临时表中并对其进行 JOIN,也许可以在临时表的列上使用索引来加快速度。

关于sql-server - 带有大量 IN 参数的 SQL 查询速度很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36175779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com