sql >> Databáze >  >> RDS >> Mysql

Pokus o optimalizaci dotazu MySQL pomocí LEFT OUTER JOIN

Bohužel mysql (a možná jakékoli dbms) neumí optimalizovat výrazy jako jobs.status != 331 and ack = 0 protože B-Strom není struktura, která umožňuje rychle najít cokoliv, co se-nerovná-konstantní-hodnotě. Vždy tak získáte úplné naskenování.

Pokud by existovala nějaká lepší podmínka jako jobs.status = 331 and ack = 0 (Poznámka ke skutečnosti, že jsem změnil != na = ), pak by bylo vhodné tento dotaz urychlit:

  1. rozdělte dotaz na 2, spojené pomocí UNION ALL
  2. v jednom dotazu nahraďte LEFT JOIN do INNER JOIN (v tom, který znamená, že wq.info is not NULL )



  1. mysql - Vložení řádku do tabulky 1, když byl odstraněn konkrétní řádek v tabulce 2

  2. Jak zkontroluji nastavení InnoDB?

  3. Vytvořte index na obrovském produkčním stole MySQL bez zamykání tabulky

  4. Nelze se připojit:Ztratilo se připojení k serveru MySQL při „čtení počátečního komunikačního paketu“, systémová chyba:0