sql >> Database >  >> RDS >> Mysql

Proberen MySQL-query te optimaliseren met LEFT OUTER JOIN

Helaas kan mysql (en misschien alle dbms) uitdrukkingen zoals jobs.status != 331 and ack = 0 niet optimaliseren omdat B-Tree geen structuur is waarmee je snel iets kunt vinden dat niet gelijk is aan een constante waarde. Zo krijgt u altijd een volledige scan.

Als er een betere conditie was, zoals jobs.status = 331 and ack = 0 (let op het feit dat ik != naar = ) dan is het een advies om deze zoekopdracht te versnellen:

  1. splits de zoekopdracht in 2, samen met UNION ALL
  2. vervang in één zoekopdracht LEFT JOIN naar INNER JOIN (in degene die impliceert dat wq.info is not NULL )



  1. Hoe verdiepingen tellen in SQL

  2. Wereldback-updag:hoe en wanneer moet u een back-up van uw database maken?

  3. Wat zijn MariaDB-tijdelijke tabellen?

  4. JSON_ARRAY_INSERT() - Waarden invoegen in een JSON-array in MySQL