为什么如果我将查询作为参数化过程运行,它运行速度要快10倍,如果我直接将其作为参数化查询运行?
我在两种情况下都使用完全相同的查询,如果我从Management Studio或代码中的SqlCommand调用则无关紧要.
编辑:执行计划看起来不同.所以为什么?我用完全相同的参数集来调用它.
编辑:经过更多测试后,似乎只有在从SQL Management Studio运行参数化查询时才会出现10倍减速.
我最近看到的一件事是,如果你设置错误的查询参数,它可能会导致重大问题.
例如,假设您有一个索引varchar列的参数,并使用SqlCommand AddWithValue()
方法从.Net设置它.在这种情况下,你正处于一个受伤的世界..Net使用unicode字符串,并将您的参数设置为nvarchar而不是varchar.现在sql server将无法使用您的索引,您将看到显着的性能损失.