为什么多个 WHERE 条件会减慢查询而不是加快查询速度?

2024-01-23

问题在于,与使用一两个条件而不是全部三个条件运行的查询相比,所讨论的查询运行速度非常慢。

现在查询。

Select Count(*)
From 
    SearchTable 
Where 
    [Date] >= '8/1/2009' 
    AND 
    [Zip] In (Select ZipCode from dbo.ZipCodesForRadius('30348', 150))
    AND 
    FreeText([Description], 'keyword list here')  

第一个条件是不言自明的。第二个使用 UDF 获取 30348 150 英里范围内的邮政编码列表。第三个使用全文索引来搜索提供的单词。

只要这个条件

[Date] >= '8/1/2009' 

查询返回 43884(表大小略低于 500k 行)3秒.

仅使用此条件

[Zip] In (Select ZipCode from dbo.ZipCodesForRadius('30348', 150))

我得到27920,也返回了3秒.

并且只有全文部分

FreeText([Description], 'keyword list here')

返回 684048秒.

当我仅使用邮政编码和全文条件时,我得到 49194秒.
仅凭日期和全文条件,我就可以在不到 9481 的时间内得到结果14秒.
使用日期和邮政编码条件仅给出 323814秒.
对于所有三个条件,查询将返回 7232分53秒. (wtfbbq)


知道原因的唯一方法是检查执行计划。 尝试将 SHOWPLAN_TEXT 设置为 ON https://www.google.com/search?q=SET+SHOWPLAN_TEXT+ON.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么多个 WHERE 条件会减慢查询而不是加快查询速度? 的相关文章

随机推荐