Sql server SQL Server:向WHERE条件添加OR子句是否会减慢查询速度?

Sql server SQL Server:向WHERE条件添加OR子句是否会减慢查询速度?,sql-server,Sql Server,主题标题的唯一附加条件是查询使用LIKEs 有一个条件的查询和有一百个条件的查询在性能上有区别吗? 表有大约10k行smth,字段类型为varchar(550) e、 g 及 是的,会有不同 如果所有条件都在同一列上,差异将很小(因为这只会增加查询成本几个CPU周期)。 如果条件在不同的列上,那么考虑到(例如)它们都是同一索引的一部分,差异可能是巨大的。如果处理其他条件,则“%”。。。(这会导致扫描)、列的唯一性、选择性的可能差异以及其他因素都会影响查询成本。在您的示例中,我希望会对性能产生影响

主题标题的唯一附加条件是查询使用
LIKE
s

有一个条件的查询和有一百个条件的查询在性能上有区别吗? 表有大约10k行smth,字段类型为
varchar(550)

e、 g


是的,会有不同

如果所有条件都在同一列上,差异将很小(因为这只会增加查询成本几个CPU周期)。
如果条件在不同的列上,那么考虑到(例如)它们都是同一索引的一部分,差异可能是巨大的。如果处理其他条件,则“%”。。。(这会导致扫描)、列的唯一性、选择性的可能差异以及其他因素都会影响查询成本。

在您的示例中,我希望会对性能产生影响。重要程度取决于您的数据

在搜索开始时使用“%”最多会触发和索引扫描(如果列已索引)。搜索的词越多,机器在索引扫描中投入的精力就越多


在“or”子句的情况下,您的搜索只需点击一个值,因此它也可能取决于您正在搜索的值的数据频率。因此,一个没有匹配值的数据集可能比一个有频繁值的数据集花费更长的时间。

谢谢。是,将所有子字符串与一列进行比较。我注意到,当添加了附加的OR子句时,查询运行得有点慢。这并不多:从平均0.2秒到平均0.4秒,但这让我怀疑这是服务器负载问题还是查询速度变慢了。需要记住的一点是,更多或更多的条件会使查询文本变大(如果您使用拨号,可能需要更长的时间传输)。此外,更多或更多的条件可能导致更多的结果行(这将需要时间通过网络传输)。使用查询计划查看两个查询所消耗的IO和CPU的实际数量。另外,“包括客户端统计信息”可以获得更多的查询配置文件…嗯。很高兴知道这一点。检查字段是否已编制索引。实际上,索引可能不会对10K行产生太大影响,尤其是在字段没有太多重复值的情况下。
SELECT * 
FROM table 
WHERE field LIKE '%value%'
SELECT * 
FROM table 
WHERE field LIKE '%val_1%' 
   OR field LIKE '%val_2%' 
   OR field LIKE '%val_3%' 
   OR field LIKE '%val_4%' 
   OR field LIKE '%val_5%'
   ... 
   OR field LIKE '%val_100%'