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

Ignorerer meget små MySQL-tabeller indekser?

NOT IN ( SELECT ... ) er meget dårligt optimeret, især i ældre versioner.

Skift til dette:

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

For zyx skal du have enten INDEX(id, abc_id) eller INDEX(abc_id, id)

Hvis zyx.id er den PRIMARY KEY , din forespørgsel giver ikke meget mening -- hvorfor teste for en enkelt række (12345)?




  1. Er det sikkert at gemme datoer som en streng i mysql?

  2. Hvordan finder man dubletter i mysql-tabel ved hjælp af PHP?

  3. Stumped SQL-undtagelse for JDBC

  4. Hvordan kan jeg gå gennem alle rækker i en tabel? (MySQL)