Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem sql - skladání nebo jendotlivě

Ahoj, měl bych dva dotazy.

Potřebuju získat několik dat.
z tabulky 'clanky' potřebuju vše (ID, název, text, datum, id autora), informace o autorovi článku (ID, jméno, příjmení), rubriku (ID a název)

Mám toto všechno vybrat v rámci jednoho dotazu nebo mám dát každá zvlášt?
1. způsob:

'SELECT c.*, -- clanky
	u.jmeno, u.prijmeni -- uživatelé  
	r.ID as r_ID, r.nazev AS rubrika_nazev,  -- rubriky
LEFT JOIN uzivatele AS u ON c.uziatel = u.ID
LEFT JOIN rubriky AS r ON c.rubriky = r.ID
WHERE c.ID = ?';

2. způsob (vše jednotlivě):


$query = 'SELECT * FROM clanky WHERE ID = ?';
$stmt = $db->prepare($query);
...
$query = 'SELECT jmeno, prijmeni FROM uzivatele WHERE ID = ?';
$stmt = $db->prepare($query);

Z hlediska efektivity, co je lepší?

2. moje otázka.: Mám si do tabulky clanky taky přidat sloupec ID_rubriky nebo si vytvořit samostantou tabulkou (podobně jako u tagů kde to nemůžu dát rovnou do tabulky clanky, neboť každý článek může mít X tagu, kdežto jeden článek bude mít vždy jen jednu rubriku). Na ten sloupec bych dal index. Budu také vyhledávat články dle rubriky (proto nevím zda by nebylo lepší pro to udělat extra tabulku). Co je z hlediska efektivity lepší?

Děkuji za váš názor.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
V případě, že databáze je správně navržena (indexy, cizí klíče, ...) a ty vracíš jeden záznam, pak j…
Jan Fiala 22.10.2019 07:05
Jan Fiala
A když načítam např. na hlavní stránce 10 příspěvků tak by byl jednodušší taky ten složený?
ppavel1 22.10.2019 16:27
ppavel1
Ano, jeden dotaz bude mít menší režii než několik jednotlivých dotazů poslední
Jan Fiala 24.10.2019 08:32
Jan Fiala

V případě, že databáze je správně navržena (indexy, cizí klíče, ...) a ty vracíš jeden záznam, pak je lepší složený dotaz.
Server zpracovává jeden dotaz a vrací jeden záznam. Ty pak zpracováváš jeden dotaz.
Režie na několik dotazů bude vyšší.

Zpět do poradny Odpovědět na původní otázku Nahoru