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

Игнорират ли много малките MySQL таблици индекси?

NOT IN ( SELECT ... ) е много лошо оптимизиран, особено в по-старите версии.

Променете на това:

SELECT  abc.*
    FROM  abc
    LEFT JOIN  zyx  ON zyx.abc_id = abc.id
    WHERE  zyx.abc_id IS NULL;
AND  zyx.id = 12345 ;

За zyx има или INDEX(id, abc_id) или INDEX(abc_id, id)

Ако zyx.id е PRIMARY KEY , вашата заявка няма особен смисъл – защо да тествате за един ред (12345)?




  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 SELECT заявка в DELETE заявка?

  2. Недефинирана константа на клас 'MYSQL_ATTR_INIT_COMMAND' в недефинирана константа на клас (PHP 5.5.3)

  3. Подзаявка в израза SELECT (MySQL)

  4. Как работи функцията UCASE() в MySQL

  5. MySQL премахва нечислови знаци за сравнение