我想優化一個表查找,因爲執行計劃顯示一個相當大的並行化表掃描。該表格被稱爲Opportunity
,我正在篩選的列是Name
。具體來說,我想沒有「補充」爲Name
的一部分,所有行:是否有可能寫一個過濾索引的列值不是'X'?
WHERE ([Name] NOT LIKE '%Supplement%');
我換一種方式來優化這個環顧四周,整個過濾索引來到這正是我需要的,但他們不似乎不喜歡LIKE
關鍵字。有沒有一種替代方法來創建像這樣的過濾索引?
該表有〜53k行,當直接查詢服務器需要4秒鐘獲取數據,但是當我將它作爲鏈接服務器查詢時(這是我需要的)需要2分鐘。爲了改善這一次,我將查詢移出了與鏈接服務器交談的腳本,並在遠程服務器上創建了一個視圖。仍然需要永遠。
這是我到目前爲止已經試過,但SSMS說,這是無效的:提前
CREATE NONCLUSTERED INDEX [FX_NotSupplementOpportunities]
ON [Opportunity]([Name])
WHERE (([Name] NOT LIKE '%Supplement%')
AND ([Name] NOT LIKE '%Suplement%')
AND ([Name] NOT LIKE '%Supplament%')
AND ([Name] NOT LIKE '%Suppliment%'));
感謝您的任何建議!
不幸的是,你不能在SQL-Server中的篩選索引條件中使用LIKE。 – 2014-09-18 21:18:15
有替代建議嗎? – Gup3rSuR4c 2014-09-18 21:21:02