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

Vyjasnění pořadí spojení pro vytváření dočasných tabulek

  1. Týká se pořadí, ve kterém je optimalizátor vyhodnocuje (připojit se do fronty). Optimalizátor si ani nemusí být vědom pořadí tabulek ve vašem příkazu SQL.

  2. Ne, není to v rozporu s tím, co je napsáno v #3, protože odpověď výslovně píše (důraz je můj):

Výsledek a výkon jsou dvě různé věci. Ve skutečnosti je k odpovědi kladný komentář, který říká, že

  1. Optimalizátoru můžete sdělit, kterou tabulku zpracovat jako první, pomocí straight_join :

Na to však musíte být opatrní, protože optimalizátorovi svážete ruku. Viz toto SO téma o výhodách a nevýhodách straight_join.

Počet záznamů, kde kritéria, indexy - to vše hraje roli při rozhodování optimalizátoru o pořadí zpracování tabulek. Neexistuje žádná kouzelná kulka, musíte si trochu pohrát a pravděpodobně dokážete oklamat optimalizátora, aby změnil pořadí stolů.



  1. Jak mohu porovnat čas na serveru SQL?

  2. Rozdělení miliardové tabulky fotbalových dat pomocí kontextu dat

  3. Problémy s kódováním textu MySQL C#

  4. Existuje způsob, jak použít dplyr::bind_rows bez shromažďování datových rámců z databáze?