gpt4 book ai didi

sql - 为什么此查询的参数化版本运行速度比非参数化版本慢?

转载 作者:行者123 更新时间:2023-12-02 20:30:04 25 4
gpt4 key购买 nike

示例查询:

CREATE PROCEDURE dbo.Test (@p varchar(10))
AS
DECLARE @param varchar(10)
SET @param = @p + '%'

SELECT * FROM table1 t1
INNER JOIN table2 t2 on t1.id = tr.id
WHERE t2.desc LIKE @param

我有一个与上面的查询类似的查询,当我在存储过程中使用它时,它会无限期地运行而不给出任何输出。但如果我使用相同的查询,

SELECT * FROM table1 t1
INNER JOIN table2 t2 on t1.id = tr.id
WHERE t2.desc LIKE 'A%' -- notice no parameter here

执行时间不到一秒。

我的 table2 有 140K 条记录,table1 有 250K 条记录

知道什么可能导致类似操作符运行缓慢吗?

最佳答案

它在编译时并不知道@param不会有前导通配符,因此当它编译批处理时,它会为您提供一个扫描而不是查找的计划。

您可以尝试 OPTION (RECOMPILE)OPTION (FORCESEEK) (SQL Server 2008),看看它是否能为您提供更好的计划。

关于sql - 为什么此查询的参数化版本运行速度比非参数化版本慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3970475/

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