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

Truy vấn hiệu suất Mysql

Bạn sẽ nghĩ rằng truy vấn này chỉ thực thi truy vấn con một lần, giữ kết quả, sau đó so sánh nó với các hàng trong truy vấn bên ngoài. Nhưng đó không phải là trường hợp của MySQL. MySQL có một lỗ hổng trong trí thông minh của trình tối ưu hóa của nó, vì vậy nó xử lý truy vấn con như một truy vấn con phụ thuộc và thực thi lại nó cho từng giá trị riêng biệt của truy vấn bên ngoài.

Để khắc phục điều này, hãy chuyển truy vấn con vào mệnh đề FROM dưới dạng bảng dẫn xuất. Nó sẽ thực hiện truy vấn con một lần và giữ kết quả dưới dạng bảng tạm thời bên trong. Sau đó, tham gia vào phiên bản khác của bảng.

SELECT `ID`, `CountryCode`, `Name`, `District`, `Population`
FROM `City`
JOIN (
    SELECT `CountryCode`, MAX(`Population`) AS `Population`
    FROM `City`
    GROUP BY `CountryCode`
) AS _max USING (`CountryCode`, `Population`);

Ngoài ra, bạn nên có một chỉ mục về Thành phố trên hai cột (CountryCode,Population) theo thứ tự đó, để truy vấn GROUP BY có thể chạy hiệu quả.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP sử dụng regex để lặp và truy vấn mysql để xuất ra tệp excel

  2. Cách khai báo bảng Internal trong MySQL?

  3. Xác thực biểu mẫu

  4. Nhận MIN Ngày biến dựa trên điểm đánh dấu trong hàng

  5. Chuỗi được mã hóa Base64 để tiêm sql đơn giản