繁体   English   中英

SQL Server删除查询性能

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM