Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql НЕ В ЗАЯВКА оптимизирайте

Използване на 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)

Използване на 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

Обяснение

Най-оптималната заявка може да се определи, ако колоните, сравнени между двете таблици, са NULL (IE:ако стойностите на specific_product_id във всяка таблица може да бъде NULL ).

Допълнение

След като бъде определена оптималната заявка, разгледайте създаването индекси (евентуално обхващащи индекси) поне за:

  • specific_product_id
  • TABLE_PRODUCT.astatus


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да архивирате MySQL бази данни с помощта на AutoMySQLBackup

  2. Как да се свържете с множество бази данни в една PHP страница?

  3. Как да активирате SSL/TLS за MySQL в Ubuntu

  4. PHP PDO::lastInsertId() връща 0

  5. SQL инжекция и клаузата LIMIT