このクエリには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
唯一異なるのは日付範囲です。クエリのcontains部分がない場合、それぞれ255行と39,106行が返されます。
39K行に対する全文クエリが255行に対する同じクエリよりも高速であることは私には意味がありません。
含むなしの2番目のクエリには、約2分かかります。それは私にとってさらに混乱を招きます。
その他の注意事項:
- aDateは、一意でないインデックスを持つ日時フィールドです
- aLiveは、一意でないインデックスを持つintフィールドです
- full_storyは、一意でないインデックスを持つintフィールドです