sql >> Database teknologi >  >> RDS >> Mysql

mysql NOT IN QUERY optimere

Brug af 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)

Brug af 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

Forklaring

Den mest optimale forespørgsel kan bestemmes ved, om kolonnerne sammenlignet mellem de to tabeller er NULLable (IE:hvis værdierne for specific_product_id i begge tabeller kan være NULL ).

Tillæg

Når den optimale forespørgsel er blevet bestemt, kan du tage et kig på oprettelse indekser (dækker muligvis indekser) for mindst:

  • specific_product_id
  • TABLE_PRODUCT.astatus


  1. SQL Server Parallel Backup Restore -2

  2. MySQL Syntaks fejlmeddelelse Operand skal indeholde 1 kolonne(r)

  3. PHP-advarsel:PHP-start:Kan ikke indlæse det dynamiske bibliotek 'pdo_mysql.so'

  4. hvordan man sletter poster fra databasen med en Ajax