我有一個表,用於存儲類似於文件名結構的樹。目前該表中有800萬條記錄。我正在努力快速查找文件列表,並在名稱中嵌入了特定的序列號。在文件名上使用全文搜索
FS_NODES
-----------------------------------
NODE_ID bigint PK
ROOT_ID bigint
PARENT_ID bigint
NODE_TYPE tinyint
NODE_NAME nvarchar(250)
REC_MODIFIED_UTC datetime
REC_DELETION_BIT bit
示例文件名(如存儲在節點名稱):
scriptname_SomeSerialNumber_201205240730.xml
正如預期的那樣,在LIKE語句查找文件需要幾分鐘的時間來掃描整個表,並想改善這個。沒有一致的名稱模式,因爲每個開發人員都喜歡創建自己的命名約定。
我試過使用全文搜索,真的很喜歡這個想法,但無法讓它找到基於關鍵字名稱的文件。我相信這個問題是由於下劃線。
關於如何讓這個工作的任何建議?我正在爲目錄使用中性語言。
@@VERSION
Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)
Nov 24 2008 13:01:59
Copyright (c) 1988-2005 Microsoft Corporation
Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
有沒有辦法改變目錄並將關鍵字手動分開? 謝謝!
一個常見的命名約定正在起作用,但只有幫助未來。一個文件名可以包含多個關鍵字,我喜歡用fts搜索表達式樹的風格。我知道這些並不是你典型的「單詞」,但如果我能把它突破下劃線,這將是理想的解決方案。我的計劃B是在名稱中查找模式並解析出標籤中的關鍵字,但這樣做容易。感謝您的反饋意見。 – RickCard
我按照你的建議添加了一個計算列,FTS能夠在目錄中使用該列。我在新列上再次嘗試了CONTAINS查詢,並且它在毫秒內與分鐘相比返回了記錄。 :) 謝謝! – RickCard