Rychlost spojení tabulek – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Rychlost spojení tabulek – MySQL – Fórum – Programujte.comRychlost spojení tabulek – MySQL – Fórum – Programujte.com

 

BigBear0
Stálý člen
29. 7. 2011   #1
-
0
-

Ahojte, mám čtyři tabulky, kde v první tabulce jsou údaje o produktech a obsahuje, mimo jiné, sloupce:

vyrobce, serie

K tomu existují další dvě tabulky výrobců a sérií, a neexistuje výrobek s neexistujícím výrobcem nebo sérií.

Dále mám tabulku s obrázky, kde ke každému výrobku existuje 0 nebo více obrázků. V této tabulce je dáno id výrobku.

Ve výsledku potřebuji dostat tabulku všech výrobků se jmény výrobců, sérií a je-li obrázek, tak s prvním, jinak bez obrázku (produkty prostě musí být všechny). Chtěl bych se zeptat, jak nejlépe spojit tyto údaje z hlediska rychlosti. Jedná se asi o 10000 záznamů.

  SELECT `vyrobky`.`nazev`, `vyrobci`.`jmeno`, `serie`.`nazev`, `obrazky`.`soubor`
    FROM `vyrobky`, `vyrobci`, `serie`, `obrazky`
   WHERE `vyrobky`.`vyrobce` = `vyrobci`.`id`
     AND `vyrobky`.`serie` = `serie`.`id`
     AND `obrazky`.`vyrobek` = `vyrobky`.`id`
GROUP BY `vyrobky`.`id`

- toto je dost rychlé, ale samozřejmě to nesplní účel, protože není-li obrázek, dotaz nevrátí výrobek

  SELECT `vyrobky`.`nazev`, `vyrobci`.`jmeno`, `serie`.`nazev`, `obrazky`.`soubor`
    FROM `vyrobky` LEFT JOIN `vyrobci` ON `vyrobky`.`vyrobce` = `vyrobci`.`id`
                   LEFT JOIN `serie` ON `vyrobky`.`serie` = `serie`.`id`
                   LEFT JOIN `obrazky` ON `obrazky`.`vyrobek` = `vyrobky`.`id`
GROUP BY `vyrobky`.`id`

- a tohle je zase PŘÍŠERNĚ pomalé

Mám tedy dvě otázky.

První je taková hodně začátečnická - jaký je rozdíl mezi "čárkovanou formou" vnitřního spojení a použitím klíčového slova INNER JOIN?

Druhá je ohledně té rychlosti. Jak to nejlépe provést z hlediska rychlosti? Zkombinovat vnitřní a vnější spojení? Jak? Proč je vlastně vnější spojení o tolik pomalejší, než vnitřní?

Děkuji :-)

Nahlásit jako SPAM
IP: 78.80.88.–
NECIN DRUHYM TO, CO NECHCES, ABY ONI CINILI TOBE!
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 1 host

Podobná vlákna

Spojení tabulek — založil Paja2

Spojení dvou tabulek — založil Forest

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý