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

JOIN dotazy vs. více dotazů

U vnitřních spojení dává smysl jeden dotaz, protože získáte pouze odpovídající řádky. Pro levá spojení je mnohem lepší více dotazů... podívejte se na následující benchmark, který jsem udělal:

  1. Jeden dotaz s 5 spojeními

    dotaz:8,074508 sekund

    velikost výsledku:2268000

  2. 5 dotazů v řadě

    kombinovaný čas dotazu:0,00262 sekund

    velikost výsledku:165 (6 + 50 + 7 + 12 + 90)

.

Všimněte si, že v obou případech dostaneme stejné výsledky (6 x 50 x 7 x 12 x 90 =2268000)

levá spojení využívají exponenciálně více paměti s redundantními daty.

Paměťový limit nemusí být tak špatný, pokud spojíte pouze dvě tabulky, ale obecně tři nebo více a to stojí za různé dotazy.

Jako vedlejší poznámku, můj MySQL server je hned vedle mého aplikačního serveru... takže doba připojení je zanedbatelná. Pokud je doba vašeho připojení v sekundách, možná to má výhodu

Frank



  1. Připojení k databázi pomocí PHP

  2. Top 10 osvědčených postupů v MySQL

  3. Co znamená vybrat počet(1) z název_tabulky na libovolné databázové tabulce?

  4. Mysql::Error:Zadaný klíč byl příliš dlouhý; maximální délka klíče je 1000 bajtů