Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Próba optymalizacji zapytania MySQL za pomocą LEFT OUTER JOIN

Niestety mysql (i być może każdy dbms) nie może zoptymalizować wyrażeń takich jak jobs.status != 331 and ack = 0 ponieważ B-Tree nie jest strukturą, która pozwala szybko znaleźć wszystko, co nie jest równe stałej wartości. Dzięki temu zawsze uzyskasz pełny skan.

Gdyby istniały lepsze warunki, takie jak jobs.status = 331 and ack = 0 (uwaga na fakt, że zmieniłem != do = ) radziłbym przyspieszyć to zapytanie:

  1. podziel zapytanie na 2 połączone przez UNION ALL
  2. zamień w jednym zapytaniu LEFT JOIN do INNER JOIN (w tym, który sugeruje, że wq.info is not NULL )



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wydajność zapytań MySQL. Który jest najlepszy?

  2. BŁĄD 2002 (HY000):Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo '/var/run/mysqld/mysqld.sock' (2)

  3. Funkcja MySQL PI() – zwraca wartość π (pi)

  4. Najlepszy sposób przechowywania ustawień użytkownika w MySQL?

  5. Jak napisać kryteria hibernacji dla tego zapytania sql?