Autor Zpráva
Taps
Profil
Zdravím, mám níže uvedený SQL dotaz a chci se zeptat zda je možné ho ještě nějak zoptimalizovat? Budu rád, za každou radu. Děkuji
SELECT t1.nazev AS lev1, t2.nazev as lev2, t3.nazev as lev3,t3.id as t3id, t4.nazev as lev4, t5.nazev as lev5
    FROM tab AS t1
    LEFT JOIN tab AS t2 ON t2.id = t1.nad_id
    LEFT JOIN tab AS t3 ON t3.id= t2.nad_id
    LEFT JOIN tab AS t4 ON t4.id = t3.nad_id
    LEFT JOIN tab AS t5 ON t5.id = t4.nad_id
    LEFT JOIN tab AS t6 ON t6.id = t5.nad_id
    WHERE t1.id=hledane_ID
Kajman
Profil
Pokud je id primární klíč a je tedy indexovaný, tak asi moc ne a nečekal bych, že ten dotaz bude pomalý. Ale co když budete mít 7 levelů zanoření nebo 70? A co když budete chtít všechny sloupečky?

Většina databází umi rekurzivní dotazy. Ne všechny mají stejnou syntaxi. Mysql je podporuje od verze 8 (mariadb 10.2.2). Na starších verzích mysql se občas používala metoda
traverzování kolem stromu, kdy tam byly pomocné předpočítané sloupce, které pomáhaly se stromovými dotazy. Ale pokud to stále řešíte pro mssql, tak odkaz už máte.
Taps
Profil
Kajman:
6 úrovní je maximum, které může být

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0