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

cách tối ưu hóa truy vấn này (liên quan đến bảng 4 mm)

Bạn cần loại bỏ GROUP BY tại đây.

MySQL không tốt trong việc tối ưu hóa nó.

Viết lại truy vấn của bạn như sau:

SELECT  *
FROM    product_table
WHERE   EXISTS
        (
        SELECT  NULL
        FROM    product_table__category_1__mm mm_1
        JOIN    category cat_1
        ON      cat_1.uid = mm_1.uid_foreign
        WHERE   mm_1.uid_local = product_table.uid
                AND mm_1.uid_foreign IN (7, 8)
        )
        AND
        …        

Tạo các chỉ mục:

product_table__category_*__mm (uid_local, uid_foreign)

hoặc tốt hơn, hãy khai báo chúng PRIMARY KEYs trên product_table__category_*__mm :

ALTER TABLE product_table__category_*__mm ADD CONSTRAINT pk_pc*mm_local_foreign (uid_local, uid_foreign)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySql Soft xóa

  2. Cập nhật truy vấn với PDO và MySQL

  3. Tìm kiếm tất cả các lần xuất hiện của một chuỗi trong cơ sở dữ liệu mysql

  4. Kết nối Django với máy chủ mysql từ xa trên mạng cục bộ

  5. Các hàm toán học trong MySQL có nhanh hơn PHP không?