如何使用CHARINDEX提高查询性能?

时间:2013-09-12 16:12:43

标签: sql tsql sql-server-2008-r2

假设我有一张桌子

MyTab (ID int, MyNo varchar(50),.....)

MyNo列上有一个索引。

然后我有以下SQL查询:

declare @Nos varchar(100000)
set  @Nos = ',001,002,003,004,'

Select * 
from MyTab
Where CHARINDEX(',' + MyNo + ', @Nos) > 0 

字符串@Nos很短时很好。但是如果@Nos更大,假设长度为10000,则查询性能非常糟糕。

如何改善此案例的表现?或者更好的解决方案来替换查询?

1 个答案:

答案 0 :(得分:2)

我发布了这种方法作为对此question的诙谐回答。不幸的是,有太多人认真对待它。虽然对于临时查询是可以的,但它实际上不适合生产。在这个问题上接受的答案要好得多,也可以解决你的性能问题。