我想在多个列中搜索特定值。有什么方法可以优化这个查询吗?
SELECT TOP (200) Events.EventDate, AVDCAV.CAVCH1, AVDCAV.CAVCH2, AVDCAV.CAVCH3, AVDCAV.CAVCH4, AVDCAV.CAVCH5, AVDCAV.CAVCH6, AVDCAV.CAVCH7, AVDCAV.CAVCH8, AVDCAV.CAVCH9
FROM AVDCAV
   INNER JOIN Events ON AVDCAV.IDEvent=Events.EventID
WHERE CAVCH9 NOT LIKE '0.0000000000' OR CAVCH8 NOT LIKE '0.0000000000' OR CAVCH7 NOT LIKE '0.0000000000' OR CAVCH1 NOT LIKE '0.0000000000'
ORDER BY AVDCAV.IDEvent DESC我正在从SQL Express2008 R2获取数据。
发布于 2017-11-16 23:08:10
因为您没有使用任何通配符,所以不需要LIKE。
WHERE '0.0000000000' NOT IN  (CAVCH1, CAVCH7, CAVCH8, CAVCH9)顺便说一句,性能是一样的,但更容易阅读。
发布于 2017-11-16 23:33:24
在不知道表大小、当前索引等的情况下,您可以尝试添加此索引
CREATE NONCLUSTERED INDEX IX_AVDCAV ON AVDCAV ( IDEvent ) 
INCLUDE ( CAVCH1, CAVCH2, CAVCH3, CAVCH4, CAVCH5, CAVCH6, CAVCH7, CAVCH8, CAVCH9 )查看性能是否提高
https://stackoverflow.com/questions/47332958
复制相似问题