sql >> Databasteknik >  >> RDS >> Mysql

mysql INTE I QUERY optimera

Med 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)

Med 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

Förklaring

Den mest optimala frågan kan bestämmas av om kolumnerna som jämförs mellan de två tabellerna är NULL-bara (IE:om värdena för specific_product_id i båda tabellen kan vara NULL ).

Tillägg

När den optimala frågan har fastställts, ta en titt på skapa index (möjligen täcker index) för åtminstone:

  • specific_product_id
  • TABLE_PRODUCT.astatus


  1. Mysql:hur väljer man grupper som har vissa värden?

  2. De där jäkla stora föremålen

  3. hur man implementerar tabellarv i GreenDao

  4. CSV till Mysql importskript för att matcha fält