Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Máy chủ SQL bị thiếu chỉ mục

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buộc Oracle trả lại N hàng trên cùng với SKIP ĐÃ KHÓA

  2. Sự khác biệt giữa chỉ mục được phân nhóm và không được phân nhóm là gì?

  3. Nhận hàng trước và hàng tiếp theo từ các hàng đã chọn với điều kiện (WHERE)

  4. Phương thức Statement.setFetchSize (nSize) thực sự làm gì trong trình điều khiển JDBC của SQL Server?

  5. Làm cách nào để bạn nhập một tệp MS SQL .sql lớn?