sql >> Base de Datos >  >> RDS >> Mysql

mysql NO EN CONSULTA optimizar

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

Usando 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

Explicación

La consulta más óptima se puede determinar si las columnas que se comparan entre las dos tablas admiten valores NULL (es decir, si los valores de specific_product_id en cualquiera de las tablas puede ser NULL ).

Anexo

Una vez que se haya determinado la consulta óptima, eche un vistazo a creando índices (posiblemente cubriendo índices) por al menos:

  • specific_product_id
  • TABLE_PRODUCT.astatus