gpt4 book ai didi

sql-server-2005 - 你能强制 Linq2SQL 不使用 sp_executesql 吗?

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

所以我写了一个 Linq 查询,运行需要 16 秒。决定查看查询计划是什么,所以我从 Linq to SQL Profiler 中得到它,查询只需要 2 秒即可运行。 感叹

在花了一天的大部分时间研究事物并最终开始使用 SQL Server Profiler 之后,我看到 Linq2SQL 正在使用 sp_executesql 来运行查询。我知道它应该提高性能,因为它更有可能重新使用执行计划......但它似乎选择了一个可怕的执行计划来使用。

奇怪的是,如果我加入一个特定的表,它只会变慢,而且我不知道为什么那个特定的表会导致问题。

编辑只是为了澄清这里的实际问题:

它实际上是针对不同的查询。一个是,本质上,

SELECT col1, col2, ... FROM table1, table2 WHERE table1.val IN (1234, 2343, 2435)

另一个是

EXEC sp_executesql 'SELECT col1, col2, ... FROM table1, table2 WHERE table1.val IN (@p1, @p2, @p3)', 
N'@p0 int,@p1 int,@p2 int,@p3 int',
@p0=1234, @p1=2343, @p3=2435

最佳答案

您的问题并非源于使用 sp_executesql,因此绕过它(您不能)不会解决您的问题。我建议您阅读 Erland Sommarskog 的优秀文章:

Slow in the Application, Fast in SSMS?
Understanding Performance Mysteries

这将使您深入了解为什么会出现性能差异、如何诊断和一致地重现它,以及最后如何解决它。

关于sql-server-2005 - 你能强制 Linq2SQL 不使用 sp_executesql 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8685909/

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