Mysql
 sql >> Base de données >  >> RDS >> Mysql

mysql PAS DANS LA REQUÊTE optimiser

Utiliser NOT EXISTS

SELECT p.* 
  FROM TABLE_PRODUCT p
 WHERE p.astatus = 'APAST' 
   AND NOT EXISTS (SELECT NULL
                     FROM TABLE_USER_OWNED_AUCTION uoa
                    WHERE uoa.specific_product_id = p.specific_product_id)

Utilisation de LEFT JOIN/IS NULL

   SELECT p.* 
     FROM TABLE_PRODUCT p
LEFT JOIN TABLE_USER_OWNED_AUCTION uoa ON uoa.specific_product_id = p.specific_product_id
    WHERE p.astatus = 'APAST' 
      AND uoa.own_id IS NULL

Explication

La requête la plus optimale peut être déterminée si les colonnes comparées entre les deux tables sont NULLables (c'est-à-dire si les valeurs de specific_product_id dans l'une ou l'autre table peut être NULL ).

Avenant

Une fois la requête optimale déterminée, regardez créer index (couvrant éventuellement des index) pendant au moins :

  • specific_product_id
  • TABLE_PRODUCT.astatus