Tôi hiện đang chạy một tập lệnh thực hiện DBCC INDEXDEFRAG trên mỗi bảng trong cơ sở dữ liệu SQL Server 2005, mỗi lần một bảng. Sử dụng DBCC DBREINDEX thay vì INDEXDEFRAG không phải là một tùy chọn, do các hạn chế về không gian và yêu cầu về thời gian hoạt động.
Tôi đã nhận thấy rằng phải mất một thời gian dài để các bảng nhất định được phân mảnh. Chẳng hạn, nếu tôi kiểm tra khung nhìn quản lý động "sys.dm_exec numquests", tôi có thể thấy rằng INDEXDEFRAG sau đây hiện đang bỏ qua chỉ mục được nhóm của một bảng có bảng_id là 829610394:
DBCC INDEXDEFRAG (0, 829610394, 1)
Tôi biết rằng sẽ còn rất lâu nữa để quá trình phân mảnh hoàn thành. Bỏ qua một bên thực tế là tập lệnh hiện đang chạy cuối cùng sẽ chống phân mảnh tất cả các bảng, liệu có hại gì khi tôi tự chạy một DBCC INDEXDEFRAG khác trên chỉ mục được nhóm của một bảng khác trong khi lệnh hiện tại thực thi không? Cả hai bảng sẽ thực sự được phân mảnh cùng một lúc nếu tôi làm điều này?