为什么如果我将查询作为参数化过程运行,它的运行速度比直接作为参数化查询运行快 10 倍?
我在这两种情况下都使用完全相同的查询,无论是从 Management Studio 调用还是从代码调用 SqlCommand 都没有关系。
编辑:执行计划看起来不同。所以为什么?我使用完全相同的一组参数来调用它。
编辑:经过更多测试,似乎仅在从 SQL Management Studio 运行参数化查询时才会出现 10 倍的减速。
最佳答案
我最近看到的一件事是,如果查询参数设置错误,可能会导致严重问题。
例如,假设您有一个索引 varchar 列的参数,并使用 SqlCommand 的 AddWithValue()
方法从 .Net 对其进行设置。在这种情况下,你将陷入一个痛苦的世界。 .Net 使用 unicode 字符串,并将您的参数设置为 nvarchar 而不是 varchar。现在 sql server 将无法使用您的索引,您将看到显着的性能损失。
关于sql-server - 为什么 SQL Server 上的查询速度慢而过程速度快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/577796/