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

Quét toàn bộ bảng đắt tiền khi chọn tất cả mà không có điều kiện

Tham khảo liên kết bên dưới để biết thêm chi tiết

https://dev.mysql.com/doc /refman/8.0/en/table-scan-avoidance.html

nguyên nhân của việc quét toàn bộ bảng ở bên dưới

  • Bảng quá nhỏ nên việc quét bảng sẽ nhanh hơn so với việc tra cứu khóa. Điều này thường xảy ra đối với các bảng có ít hơn 10 hàng và độ dài hàng ngắn.

  • Không có giới hạn khả dụng nào trong mệnh đề ON hoặc WHERE đối với các cột được lập chỉ mục.

  • Bạn đang so sánh các cột được lập chỉ mục với các giá trị không đổi và MySQL đã tính toán (dựa trên cây chỉ mục) rằng các hằng số bao phủ một phần quá lớn của bảng và quá trình quét bảng sẽ nhanh hơn

  • Bạn đang sử dụng khóa có số lượng thấp (nhiều hàng khớp với giá trị khóa) qua một cột khác. Trong trường hợp này, MySQL giả định rằng bằng cách sử dụng khóa, nó có thể sẽ thực hiện nhiều tra cứu khóa và quá trình quét bảng sẽ nhanh hơn.

để tránh sử dụng toàn bộ bảng dưới đây:

  • Sử dụng ANALYZE TABLE tbl_name để cập nhật các bản phân phối chính cho bảng đã quét.

  • Sử dụng FORCE INDEX cho bảng được quét để cho MySQL biết rằng việc quét bảng rất tốn kém so với việc sử dụng chỉ mục đã cho:

    ví dụ. CHỌN * TỪ t1, t2 FORCE INDEX (index_for_column) WHERE t1.col_name =t2.col_name;




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng XML và XSD để tạo cơ sở dữ liệu phổ biến

  2. Làm thế nào để phát hiện xem một người dùng đã đăng xuất, trong php?

  3. Làm thế nào để khởi động lại máy chủ MySQL từ xa đang chạy trên Ubuntu Linux?

  4. Làm thế nào để giám sát không gian MySQL?

  5. GROUP_CONCAT nhiều trường có dấu phân tách khác nhau