此查询返回非常慢
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%')
原因是因为通配符之间的字符串的长度吗?
答案 0 :(得分:1)
为什么查询时间如此不同?
这两个查询都将执行表扫描或包含4个WHERE子句列的索引的扫描。
但是,找到第100个匹配行后,这两个查询将立即停止。因此,要扫描的表或索引中匹配行的分布和位置将控制此查询的运行时间。