Autor Zpráva
george[06]
Profil *
Pokud mám více tabulek, které spolu souvisí a údaje v nich jsou navzájem "pospojovány" např podle stejného ID.
Je pro výkon databáze optimálnější vypisovat data z každé tabulky pomocí SELECT zvlášť, nebo je vhodnější jeden složitější SELECT pro spojení pomocí JOIN pro všechny tabulky?
djlj
Profil
Jeden select.
Joker
Profil
Nedělal jsem testy, ale řekl bych, že je lepší jeden složitější SELECT.
Ale záleží, třeba pokud by se dělalo několik dotazů, ve kterých by byly ty jednoduché SELECTy různě poskládané, byly by asi zas lepší jednoduché SELECTy, protože by se použila query cache.
A někde je zase omezený počet dotazů do databáze, potom je samozřejmě lepší dávat méně a složitých dotazů, než více a jednoduchých.

Nejlepší varianta asi bude si prostě oba ty dotazy napsat a udělat nějaký benchmark. A potom nám sem napsat výsledky :-)
george[06]
Profil *
Joker
Ještě pro upřesnění. Co už je vlastně považováno za "moc" SELECTů? Třeba 5 na stránku je "moc"? Vím, že záleží na tom, jaké jsou to SELECTy...
george[06]
Profil *
Joker
...ale jen tak pro představu.

P.S. ta věta měla pokračovat v předchozím threadu :-)
Leo
Profil
Rozhodne JOIN - co kdyz vam nekdo mezi selecty zmeni obsah tabulek? :-) Nehlede na to, ze by si mezivyskedy musela pamatovat nejaka aplikace, Leo
Joker
Profil
Co už je vlastně považováno za "moc" SELECTů? Třeba 5 na stránku je "moc"?
To se nedá takhle přesně říct. Podle toho, co ta stránka dělá, to může být "efektivní" nebo "neefektivní". To znamená, že je použita pro daný úkol nejvhodnější varianta, nebo nějaká méně vhodná, kdy dochází k plýtvání.

No a pak je druhý pohled: dotazy do databáze představují zátěž databázového serveru. Dokud to ten server zvládá, je to celkem v pohodě, můžu mít neefektivní skript, který zbytečně zatěžuje databázi klidně 10x více než optimální varianta, ale dokud budu mít málo návštěvníků a předimenzovaný databázový server, nemusí to vadit. Naopak když mám spoustu návštěvníků a jako databázový server počítač s PII a 64MB RAM, může se lehce stát, že server nebude zvládat ani optimální variantu, kdy už ušetřit prostě nepůjde. Pak nezbude, než ubírat vlastnosti aplikace, aby se její hardwarové nároky vešly do dostupných zdrojů.

Prostě, co je "moc" dotazů bych definoval nějak takhle: ze "softwarového pohledu" je to víc, než kolik je potřeba k řešení daného úkolu. Z "hardwarového pohledu" je to víc, než kolik daný stroj při daném počtu zobrazení stránek utáhne.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0