sql >> Database >  >> RDS >> Mysql

hoe deze query te optimaliseren (4 mm tabellen betrokken)

U moet zich ontdoen van GROUP BY hier.

MySQL is niet goed in het optimaliseren ervan.

Herschrijf uw zoekopdracht als volgt:

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
        …        

Maak de indexen:

product_table__category_*__mm (uid_local, uid_foreign)

of, beter nog, verklaar ze PRIMARY KEYs op product_table__category_*__mm :

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


  1. MySQL GROUP BY-gedrag

  2. INSERT en SELECT in één query MySQL

  3. Een geïndexeerde weergave-bug met scalaire aggregaten

  4. kan ik mysql_insert_id() vertrouwen om de juiste waarde te retourneren, multithreading paranoia?