Sql-Server
我的觀點是否會減慢更新速度?
我有一個經常執行更新語句的 SQL Server 數據庫。我在活動監視器上看到這個更新語句觸發了 27 毫秒,我想改進它。
更新查詢是這樣的:
UPDATE Code SET CommissioningFlag = @newCommFlagValue , Source = @source , UserName = @username , LastChange = CAST(SYSDATETIMEOFFSET() as nvarchar(50)) , SentToNextLevel = 0 , HelperCodeId = @helperCodeId WHERE CodeId = @codeId
視圖突出顯示的腳本是:
CREATE VIEW dbo.PrintedCodesStatistics WITH SCHEMABINDING AS SELECT AggregationLevelId, COUNT_BIG(*) as CodesPrinted FROM dbo.Code WHERE (CommissioningFlag != 255) GROUP BY AggregationLevelId GO CREATE UNIQUE CLUSTERED INDEX [IX_Printed_Statistics] ON [dbo].[PrintedCodesStatistics]([AggregationLevelId] ASC);
最後,
Code
表格腳本:CREATE TABLE [dbo].[Code] ( [CodeId] INT IDENTITY (1, 1) NOT NULL, [Serial] NVARCHAR (20) NOT NULL, [AggregationLevelId] TINYINT NOT NULL, [CommissioningFlag] TINYINT NOT NULL, [... ] CONSTRAINT [PK_CODE] PRIMARY KEY CLUSTERED ([CodeId] ASC), CONSTRAINT [UC_CODE_SERIAL] UNIQUE NONCLUSTERED ([Serial] ASC)
視圖會減慢更新查詢的速度嗎?
索引視圖對寫入成本的貢獻與表上的正常索引一樣多,甚至更多。
每次寫入基表時,視圖上的索引都必須立即更新。
與正常索引一樣,有一個折衷:如果您的索引合理減慢並在讀取時顯著提升性能,則保留它。如果沒有,請擺脫它。