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

Kdy použít STRAIGHT_JOIN s MySQL

Nedoporučoval bych používat STRAIGHT_JOIN bez dobrého důvodu. Moje vlastní zkušenost je, že optimalizátor dotazů MySQL volí špatný plán dotazů častěji, než bych chtěl, ale ne tak často, abyste jej měli jednoduše obejít obecně, což byste dělali, kdybyste vždy používali STRAIGHT_JOIN.

Moje doporučení je nechat všechny dotazy jako běžné JOINy. Pokud zjistíte, že jeden dotaz používá suboptimální plán dotazů, navrhoval bych nejprve pokusit se dotaz trochu přepsat nebo restrukturalizovat, abyste zjistili, zda optimalizátor nevybere lepší plán dotazů. Také se alespoň u innodb ujistěte, že to není jen tím, že vaše statistiky indexu jsou zastaralé (ANALÝZA TABULKY ). To může způsobit, že optimalizátor zvolí špatný plán dotazů. Tipy pro optimalizaci by obecně měly být vaší poslední možností.

Dalším důvodem, proč nepoužívat tipy pro dotazy, je to, že distribuce dat se může v průběhu času měnit nebo se může měnit selektivita indexu atd. s růstem tabulky. Vaše tipy na dotazy, které jsou nyní optimální, se mohou časem stát neoptimálními. Optimalizátor však nebude schopen přizpůsobit plán dotazů kvůli vašim nyní zastaralým radám. Zůstanete flexibilnější, pokud umožníte optimalizátoru, aby rozhodoval.



  1. Operátoři sady MariaDB SQL

  2. Připojení Oracle k Amazon Aurora

  3. Funkce se provádí rychleji bez modifikátoru STRICT?

  4. Přesunout systémové databáze v clusteru převzetí služeb při selhání serveru SQL Server