Autor | Zpráva | ||
---|---|---|---|
Taps Profil |
#1 · Zasláno: 10. 2. 2022, 10:48:13
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 |
#2 · Zasláno: 10. 2. 2022, 11:11:14
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 |
#3 · Zasláno: 10. 2. 2022, 12:03:11
Kajman:
6 úrovní je maximum, které může být |
||
Časová prodleva: 2 roky
|
0