當在此列上沒有索引時,是否可以相對快速地更新SQL Server 2014中的大量記錄,在nvarchar(x)
列上進行過濾?在nvarchar列上更新沒有索引的大量記錄
例如,我想運行:
UPDATE Products
SET Active = 1
WHERE ProductBrand = 'brand name'
我
Product
表
與數百萬行,並且對ProductBrand
沒有索引。
創建索引大約需要45分鐘,我們希望更快地更新表格。
我們希望儘可能以最快的方式執行此操作,創建索引需要大量時間。如果除了使用索引之外還有其他方法,我就會徘徊。
(創建上的名字列的索引,離開它那裏當然是一個很好的做法,以及從時間重建它的時間)
創建索引只有一次,然後您可以稍後使用它進行所有更新... 45分鐘似乎沒有多少時間進行一次性操作... –
如果您有企業版,則可以在不中斷其他事務的情況下使用'WITH ONLINE = ON'選項。另外,如果'品牌名稱'是一個特定的唯一值,'ProductBrand'上的索引將不再需要(坦率地說,這看起來不太可能),你可以用'WHERE'明確地過濾索引。這不會加快索引創建速度,但會降低存儲需求。儘管如此,你*將*需要一個索引來加快速度,因爲*快速過濾正是索引設計要解決的問題*。 –
如果您不想創建索引,那麼只需運行沒有它的更新語句。它仍然可以工作,並且可能需要不到45分鐘(儘管可能不會少得多,取決於您的負載)。但是如果有什麼方法可以在不使用索引的情況下加快速度,SQL Server就已經可以做到了。 –