Mysql
 sql >> база данни >  >> RDS >> Mysql

как да оптимизирате тази заявка (включени са 4 mm таблици)

Трябва да се отървете от GROUP BY тук.

MySQL не е добър в оптимизирането му.

Пренапишете заявката си така:

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
        …        

Създайте индексите:

product_table__category_*__mm (uid_local, uid_foreign)

или, по-добре, ги декларирайте PRIMARY KEYs на 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 данни в Excel в PHP

  2. Има ли начин да се покаже клауза WHERE само за едно поле в MySQL?

  3. MYSQL:АКО има OR условие и REGEXP съвпадат

  4. Най-бързият начин за намиране на разстояние между две широчини/дълги точки

  5. Синтактична грешка на MYSQL - функция Codeigniter за изчисляване на разходите