2011-03-29 34 views
1

我有下面的表:全文檢索索引具有其他列

Id, int 
FirstName, nvarchar 
LastName, nvarchar 
Description, ntext 

我有一個全文目錄覆蓋說明場。

我的查詢:

SELECT FirstName, LastName 
WHERE LastName = 'Johnson' 
AND CONTAINS(Description, 'house') 

現在,我不知道用哪個指標來優化這個查詢,以便能夠採取全文目錄的充分利用。在這種情況下,SQL Server能夠利用LastName上的索引嗎?

(我知道我可以只測試了一下,但我真正的表和查詢結構明顯不如上述那麼簡單,所以我寧願從別人誰真正知道它是如何工作的認識)

+0

全文搜索功能僅使用全文索引:http://www.simple-talk.com/sql/learn-sql-server/understanding-full-text-indexing-in-sql-server/ – 2011-03-29 05:05:37

+0

我讀過整篇文章。據我所知,他沒有觸及全文索引如何與普通索引結合使用的問題。 – 2011-03-29 06:08:00

回答

3

是的,LastName上的索引將有所幫助。 SQL Server可能會創建一個計劃,該計劃基本上在「Johnson」的NC索引上的範圍掃描與全文索引搜索的結果之間進行連接。本白皮書包含一些您感興趣的細節:SQL Server 2005 Full-Text Queries on Large Catalogs: Lessons Learned

+0

你是對的,文章包含我感興趣的細節,雖然看起來他們沒有直接描述這個問題的場景。 – 2011-03-29 11:21:17

+0

正如我理解你的答案,SQL Server可能會做類似以下內容:1.根據全文索引查找行ID 2.根據普通索引查找行ID 2.返回兩者中存在的行。 – 2011-03-29 11:23:21

+0

是的,你的理解是正確的。 – 2011-03-29 16:16:54