为什么查询时间如此不同?

时间:2019-06-11 18:53:27

标签: sql-server

此查询返回非常慢

SELECT TOP 100 *
FROM MyTable N
WHERE
    (N.[Subject] LIKE '%not_postterm%')
    OR (N.[Content] LIKE '%not_postterm%')
    OR (N.[Subject] LIKE '%not_post_term%')
    OR (N.[Content] LIKE '%not_post_term%')

但这很快就会返回

SELECT TOP 100 *
FROM MyTable N
WHERE
    (N.[Subject] LIKE '%postterm%')
    OR (N.[Content] LIKE '%postterm%')
    OR (N.[Subject] LIKE '%post_term%')
    OR (N.[Content] LIKE '%post_term%')

原因是因为通配符之间的字符串的长度吗?

1 个答案:

答案 0 :(得分:1)

  

为什么查询时间如此不同?

这两个查询都将执行表扫描或包含4个WHERE子句列的索引的扫描。

但是,找到第100个匹配行后,这两个查询将立即停止。因此,要扫描的表或索引中匹配行的分布和位置将控制此查询的运行时间。