×

Làm thế nào để sử dụng EXPLAIN để phân tích truy vấn?

Trong MySQL, lệnh EXPLAIN được sử dụng để phân tích và hiển thị thông tin về cách MySQL thực thi một truy vấn SQL. Sử dụng EXPLAIN có thể giúp bạn tối ưu hóa truy vấn bằng cách hiểu rõ hơn về việc sử dụng chỉ mục, phương thức join, và nhiều yếu tố khác ảnh hưởng đến hiệu suất truy vấn.

Cách Sử Dụng EXPLAIN

Để sử dụng EXPLAIN, đơn giản chỉ cần thêm nó trước một câu lệnh SELECT, INSERT, UPDATE, hoặc DELETE.

Cú pháp:

EXPLAIN SELECT column_names FROM table_name WHERE conditions;

Hiểu Kết Quả từ EXPLAIN

Khi bạn sử dụng EXPLAIN, MySQL trả về một bảng với các cột sau đây, mô tả cách truy vấn được thực thi:

  • id: Số nhận dạng cho mỗi phần của truy vấn.
  • select_type: Loại của câu SELECT (PRIMARY, SUBQUERY, etc.).
  • table: Tên bảng tham gia truy vấn.
  • partitions: Các phân vùng của bảng được truy vấn.
  • type: Phương thức truy cập dữ liệu (ALL, index, range, etc.), cho thấy cách dòng được lấy từ bảng.
  • possible_keys: Các chỉ mục có thể được sử dụng cho truy vấn.
  • key: Chỉ mục thực sự được sử dụng.
  • key_len: Độ dài của chỉ mục được sử dụng.
  • ref: Các cột hoặc giá trị hằng số được sử dụng với chỉ mục.
  • rows: Ước lượng số hàng MySQL cần xem xét khi thực hiện truy vấn.
  • filtered: Phần trăm của hàng được lọc bởi điều kiện truy vấn.
  • Extra: Thông tin bổ sung về cách thức thực thi truy vấn.

Làm Thế Nào để Sử Dụng Thông Tin từ EXPLAIN

  • Kiểm tra các truy vấn không sử dụng chỉ mục (type = ALL hoặc index): Những truy vấn này có thể rất chậm vì chúng quét toàn bộ bảng hoặc sử dụng tất cả các chỉ mục. Xem xét việc tạo chỉ mục cho các cột liên quan.
  • Ước lượng số hàng (rows) và tỷ lệ lọc (filtered): Các giá trị lớn ở đây có thể chỉ ra truy vấn không hiệu quả. Tìm cách giảm số lượng hàng được xem xét.
  • Phân tích thông tin trong cột Extra: Đặc biệt, tìm các giá trị như "Using temporary" và "Using filesort", chỉ ra rằng MySQL cần tạo bảng tạm hoặc sắp xếp dữ liệu trên đĩa, điều này có thể chậm.

Sử dụng EXPLAIN là một phần quan trọng trong quy trình tối ưu hóa truy vấn, giúp bạn xác định cách cải thiện hiệu suất truy vấn bằng cách chỉnh sửa truy vấn hoặc cấu trúc bảng.

Comments