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

Který z nich je rychlejší:korelované poddotazy nebo spojení?

Za prvé, korelovaný poddotaz je skutečně typem spojení. Neexistuje žádné zlaté pravidlo o tom, který vytváří nejlepší plán provedení. Pokud vás zajímá výkon, musíte vyzkoušet různé formy, abyste viděli, co funguje nejlépe. Nebo se alespoň podívejte na exekuční plány, abyste se mohli rozhodnout.

Obecně mám tendenci vyhýbat se korelovaným poddotazům z několika důvodů. Za prvé, lze je téměř vždy zapsat bez korelace. Za druhé, mnoho dotazovacích strojů je přemění na vnořené smyčkové spojení (i když pomocí indexů) a jiné strategie spojení mohou být lepší. V takových případech korelované poddotazy ztěžují paralelizaci dotazu. Za třetí, korelované poddotazy jsou obvykle v klauzuli SELECT nebo WHERE. Líbí se mi, aby všechny mé tabulky byly v klauzuli FROM.

V MySQL jsou však korelované poddotazy často nejvíce efektivní způsob zadávání dotazu. To platí zejména při použití poddotazu v IN doložka. Neexistuje tedy žádné zlaté pravidlo.




  1. Nelze se připojit k PostgreSQL pomocí PHP pg_connect()

  2. SQLAlchemy více cizích klíčů v jedné mapované třídě na stejný primární klíč

  3. ETL vs ELT:Posuzujeme, vy soudce

  4. Proč SQL Server automaticky ignoruje prázdné místo na konci?