此查询需要 21 秒:
SELECT Top 50 ROW_NUMBER() OVER (ORDER BY aDate DESC) AS Row, aID, aHeadline, aAuthor, aDate, TopStory, SiteSectionID, PrintSection, aSummary, small_image, aBody FROM articles
WHERE aLive = -1 AND full_story = -1 AND aDate >= '9/3/2012' AND aDate <= '10/3/2012' AND (Contains((aAuthor,aBody,aHeadline,aSubhead,aSummary), '"kodak"'))
ORDER BY aDate DESC
此查询需要 1 秒:
SELECT Top 50 ROW_NUMBER() OVER (ORDER BY aDate DESC) AS Row, aID, aHeadline, aAuthor, aDate, TopStory, SiteSectionID, PrintSection, aSummary, small_image, aBody FROM articles
WHERE aLive = -1 AND full_story = -1 AND aDate >= '9/3/2002' AND aDate <= '10/3/2012' AND (Contains((aAuthor,aBody,aHeadline,aSubhead,aSummary), '"kodak"'))
ORDER BY aDate DESC
唯一不同的是日期范围。如果没有查询的包含部分,它们分别返回 255 和 39,106 行。
对我来说,对 39K 行的全文查询比对 255 行的查询要快,这没有任何意义。
没有包含的第二个查询需要将近 2 分钟。这让我更加困惑。
其他注意事项:
- aDate 是具有非唯一索引的日期时间字段
- aLive 是具有非唯一索引的 int 字段
- full_story 是一个具有非唯一索引的 int 字段