Xin chào,
Việc sử dụng Chỉ mục trong cơ sở dữ liệu SQL Server xảy ra trong môi trường yêu cầu hiệu suất, tốc độ và tiết kiệm bộ nhớ nhất.
Trong một bảng có hàng triệu hoặc hàng tỷ bản ghi, chúng ta có thể sử dụng Chỉ mục để đọc ít bản ghi hơn và tìm kiếm ít hơn để tìm bản ghi liên quan.
Index được tạo chính xác, hàng triệu bản ghi trong cơ sở dữ liệu chúng tôi đã tìm kiếm trong thời gian rất ngắn để mang lại bản ghi thuận tiện cho người gọi, đồng thời ít phải đọc bản ghi do đạt được bản ghi mục tiêu, chúng tôi sử dụng hiệu quả tài nguyên hệ điều hành.
Bạn nên tạo chỉ mục cho các truy vấn chủ yếu chỉ đọc trên một bảng. Nếu thao tác Xóa, cập nhật không chỉ là truy vấn chỉ đọc, bạn không nên tạo chỉ mục cho bảng đó.
Bạn có thể xem đề xuất chỉ mục còn thiếu của SQL Server với tập lệnh sau. Bạn có thể tạo chỉ mục bị thiếu nhưng bạn nên theo dõi các chỉ mục này, Nếu chúng không hữu ích, bạn nên loại bỏ chúng.
SELECT MID.[statement] AS ObjectName ,MID.equality_columns AS EqualityColumns ,MID.inequality_columns AS InequalityColms ,MID.included_columns AS IncludedColumns ,MIGS.last_user_seek AS LastUserSeek ,MIGS.avg_total_user_cost * MIGS.avg_user_impact * (MIGS.user_seeks + MIGS.user_scans) AS Impact ,N'CREATE NONCLUSTERED INDEX <TYPE_Index_Name> ' + N'ON ' + MID.[statement] + N' (' + MID.equality_columns + ISNULL(', ' + MID.inequality_columns, N'') + N') ' + ISNULL(N'INCLUDE (' + MID.included_columns + N');', ';') AS CreateStatement FROM sys.dm_db_missing_index_group_stats AS MIGS INNER JOIN sys.dm_db_missing_index_groups AS MIG ON MIGS.group_handle = MIG.index_group_handle INNER JOIN sys.dm_db_missing_index_details AS MID ON MIG.index_handle = MID.index_handle WHERE database_id = DB_ID() AND MIGS.last_user_seek >= DATEDIFF(month, GetDate(), -1) ORDER BY Impact DESC;