1

SQL Server 2012 にテーブルがあり、1 週間でほぼ 6,600 万回の挿入が行われます。どの列でインデックスを使用する必要がありますか?

create TABLE [dbo].[Details](
        [ID] [bigint] IDENTITY(1,1) NOT NULL,
        [WorkflowContentMetricsID] [bigint] not null,
        [ContentType] [nvarchar](1000) NULL,
        [SourceID] [nvarchar](2000) NULL,
        [DestinationID] [nvarchar](2000) NULL,
        [ParentSourceID] [nvarchar](2000) NULL,
        [Title] [nvarchar](max) NULL,
        [Status] [nvarchar](max) NULL,
        [Debug] [nvarchar](max) NULL,
        [Metadata] [nvarchar](max) NULL,
        [StatusCategory] [nvarchar](max) NULL,
        [SangamWorkflowRunID] [nvarchar](1000) NULL,
        [StartDateTime] [nvarchar](1000) NULL,
     CONSTRAINT [PK_WorkflowContentDetails] PRIMARY KEY CLUSTERED 
    (
        [ID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

    GO

私が使用するクエリは

SELECT ID
      ,WorkflowContentMetricsID
      ,ContentType
      ,SourceID
      ,DestinationID
      ,ParentSourceID
      ,Title
      ,[Status]
      ,Debug
      ,Metadata
      ,StatusCategory
FROM WorkflowContentDetails
WHERE ContentType NOT IN ('Image' , 'EntityList')
AND SangamWorkflowRunID = @SangamWorkflowRunID
And StatusCategory in (@StatusCategory)
4

2 に答える 2

2

(質問が述べているように)挿入専用の場合は、どの列にもインデックスを使用しないでください。テーブルのインデックスが多いほど、実行が遅くなります。

この文は句がないため、索引付けinsertの恩恵を直接受けることができない唯一の操作です。WHERE

于 2013-10-14T11:08:30.097 に答える