Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 对多个多列使用NOT LIKE_Sql_Sql Server - Fatal编程技术网

Sql 对多个多列使用NOT LIKE

Sql 对多个多列使用NOT LIKE,sql,sql-server,Sql,Sql Server,我想在多个列中搜索特定值。有没有办法优化这个查询 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=Event

我想在多个列中搜索特定值。有没有办法优化这个查询

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 Express 2008 R2获取数据。

因为您没有使用任何不需要的通配符
,比如

WHERE '0.0000000000' NOT IN  (CAVCH1, CAVCH7, CAVCH8, CAVCH9)

顺便说一句,性能是一样的,但更容易阅读。

因为你没有使用任何通配符,你不需要像
那样的

WHERE '0.0000000000' NOT IN  (CAVCH1, CAVCH7, CAVCH8, CAVCH9)

顺便说一句,性能相同,但更易于阅读。

在不知道表大小、当前索引等的情况下,您可以尝试添加此索引

CREATE NONCLUSTERED INDEX IX_AVDCAV ON AVDCAV ( IDEvent ) 
INCLUDE ( CAVCH1, CAVCH2, CAVCH3, CAVCH4, CAVCH5, CAVCH6, CAVCH7, CAVCH8, CAVCH9 )

若要查看性能是否在不知道表大小、当前索引等的情况下有所提高,可以尝试添加此索引

CREATE NONCLUSTERED INDEX IX_AVDCAV ON AVDCAV ( IDEvent ) 
INCLUDE ( CAVCH1, CAVCH2, CAVCH3, CAVCH4, CAVCH5, CAVCH6, CAVCH7, CAVCH8, CAVCH9 )


查看性能是否有所提高

似乎是因为您的表设计不好。为什么会有那么多的cavch专栏?我不是《可怜的你》的创作者。创建一个返回规范化结果的视图。然后改为使用该视图。为什么要像使用通配符搜索一样使用
。将它们替换为
CAVCH9'0.0000000000'
如果您当时有性能问题,我的回答更注重可读性。性能问题应包括
EXPLAIN ANALYZE
和一些关于表大小、索引、当前时间性能、期望时间等的信息。
Slow
是一个相对术语,我们需要一个实际值进行比较。看起来您的表设计很糟糕。为什么会有那么多的cavch专栏?我不是《可怜的你》的创作者。创建一个返回规范化结果的视图。然后改为使用该视图。为什么要像使用通配符搜索一样使用
。将它们替换为
CAVCH9'0.0000000000'
如果您当时有性能问题,我的回答更注重可读性。性能问题应包括
EXPLAIN ANALYZE
和一些关于表大小、索引、当前时间性能、期望时间等的信息。
Slow
是一个相对术语,我们需要一个实际值进行比较。没有性能改进。被翻译成同样的东西。优化可以意味着很多事情,也可以优化可读性。好的,这很好。但对我来说,这并不合适。这个查询之后没有结果。我没有输入足够的0,可能是吗?没有。例如,如果我只使用前两列。我看到了结果。在我的问题中,查询运行良好(使用相同的0s:P)。没有性能改进。被翻译成同样的东西。优化可以意味着很多事情,也可以优化可读性。好的,这很好。但对我来说,这并不合适。这个查询之后没有结果。我没有输入足够的0,可能是吗?没有。例如,如果我只使用前两列。我看到了结果。在我的问题中,查询运行良好(使用相同的0s:P)。