Tôi có một bảng ghi nhật ký với khoảng 1.500.000 hàng, khóa chính là danh tính tăng dần và chỉ mục được nhóm nằm trên khóa chính. Giá trị nhận dạng được tạo tự động => bản ghi luôn được thêm vào cuối. Kích thước hàng trung bình là 1570 byte.
Có rất nhiều phân chia trang vì các hàng mới được thêm thường xuyên. Không có hàng nào nhận được cập nhật / xóa và có một chỉ mục không được nhóm trên bảng để các hàng có thể được chọn. Do sự phân tách trang, chỉ mục được phân cụm luôn bị phân mảnh> 65%.
Tôi tự hỏi bảng của tôi sẽ có lợi khi loại bỏ chỉ mục được nhóm và làm cho nó thành một bảng heap?
Đây là cách bảng của tôi + chỉ mục không phân cụm trông như sau:
CREATE TABLE [dbo].[LogEntry](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Application] [varchar](20) NOT NULL,
[EntityFullName] [varchar](80) NOT NULL,
[Action] [int] NOT NULL,
[UserName] [varchar](25) NOT NULL,
[TimeStamp] [datetime] NOT NULL,
[EntityId] [varchar](50) NOT NULL,
[WhatChanged] [nvarchar](max) NULL,
CONSTRAINT [PK_LogEntry] PRIMARY KEY CLUSTERED(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY] )
ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE NONCLUSTERED INDEX [ID_Application_Entity_FullName_TimeStamp] ON [dbo].[LogEntry]
(
[Application] ASC,
[EntityFullName] ASC,
[TimeStamp] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = OFF) ON [PRIMARY]
GO
Cập nhật: Ai đó đã kích hoạt tự động thu nhỏ sau lưng tôi => đây sẽ là nguyên nhân của sự phân mảnh