我在SQL Server 2008中大(1TB)表看起來是這樣的:如何最好做一個部分文本匹配在SQL Server 2008
ID int | Flag BIT | Notes NTEXT
我需要搜索的每一行以及在Flag
位設置爲1,其中說明包含的單詞flip
是
UPDATE Table SET Flag = 1
WHERE Notes LIKE '%flip%'
「最好」的方式做到這一點?
我在想這可能需要幾天才能在如此大的桌子上運行。我試過運行
SELECT TOP (10) * FROM Table
WHERE Notes LIKE '%flip%'
它在10分鐘後仍然運行 - 所以性能看起來不太好。
創建一個C#應用程序來讀取/更新每一行是一個更好的方法。至少我可以在沒有鎖定桌子的情況下做一些改動。
我應該考慮其他方法嗎?
請注意,全文索引對您在此處指定的後綴或中期模式匹配沒有幫助(即前導通配符術語搜索)。 http://stackoverflow.com/questions/1758393/is-there-an-efficient-way-to-index-inside-words-in-sql-server-2008/1758480#1758480 – chadhoc 2009-11-19 15:03:33
你可能還會注意到ntext是不建議使用,您需要將字段定義更改爲nvarchar(max)。 – HLGEM 2009-11-19 15:46:21