[英]SQL Server DELETE query performance
我有一個簡單的表,正在評估這是從其中刪除一些記錄的最佳方法。
DELETE查詢非常簡單: DELETE FROM [dbo].[Badge] WHERE [Id_Operatore] = @SOMEVALUE
有沒有辦法提高此操作的性能?
這是表:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Badge](
[Id_Badge] [int] IDENTITY(1,1) NOT NULL,
[Id_Operatore] [int] NULL,
[Badge0] [smallint] NULL,
[Badge1] [smallint] NULL,
[Badge2] [smallint] NULL,
[Badge3] [smallint] NULL,
[Badge4] [smallint] NULL,
[Badge5] [smallint] NULL,
[Badge6] [smallint] NULL,
[Badge7] [smallint] NULL,
[Badge8] [smallint] NULL,
[Badge9] [smallint] NULL,
[Badge10] [smallint] NULL,
[Badge11] [smallint] NULL,
[Badge12] [smallint] NULL,
[Badge13] [smallint] NULL,
[Badge14] [smallint] NULL,
[Badge15] [smallint] NULL,
[Badge16] [smallint] NULL,
[Badge17] [smallint] NULL,
[Badge18] [smallint] NULL,
[Badge19] [smallint] NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Badge] WITH CHECK ADD CONSTRAINT [Badge_FK00] FOREIGN KEY([Id_Operatore])
REFERENCES [dbo].[Operatori] ([ID_Operatore])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[Badge] CHECK CONSTRAINT [Badge_FK00]
GO
您應該在外鍵上添加索引。
該索引可能會涵蓋所有內容,因此包括所有這些標志不是一個壞主意。
在[Id_Operatore]上創建聚簇(首選)或非聚簇索引。
“群集”使數據彼此保持物理狀態。 這樣可以減少刪除時的IO。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.