Autor | Zpráva | ||
---|---|---|---|
majo80 Profil * |
#1 · Zasláno: 18. 11. 2012, 21:01:06
Mám v jednej tabuľke "produkty" celkom 2000 riadkov (tabuľka má 26 stĺpcov).
Potrebujem naraz vypísať všetky produkty ale tento výpis zaberie cca 3-5s. Je to normálna doba alebo na ten počet produktov je to už dlho? Samozrejme v SQL vypisujem iba 2 stĺpce (názov a id). Ako by som mohol tento príkaz ešte optimalizovať? Majo |
||
Tori Profil |
#2 · Zasláno: 18. 11. 2012, 21:04:26
majo80:
Takhle dlouho se provádí celý ten výpis, anebo jen SQL dotaz? Resp. když si ten SQL dotaz spustíte v Admineru nebo PhpMyAdminu, trvá také tak dlouho? |
||
majo80 Profil * |
#3 · Zasláno: 18. 11. 2012, 21:18:13
Aha, problém bude asi niekde inde, pri spustení SQL v PhpMyAdmin to ide okamžite.
Ešte doplním teda: Po zavolaní SQL príkazu a výpise ID a NAZOV spustí druhý príkaz na zistenie počtu ID v inej tabuľke: $result = mysql_query("SELECT id FROM druha_tabulka WHERE suvisiaci_produkt='$load_id'"); $oznacit = mysql_num_rows($result); $load_id = id z prvej tabuľky.
Potom nasleduje klasický výpis názvov s tým, že ak je $oznacit rovné 1 potom sa výpis vypíše inou farbou.
|
||
Tori Profil |
#4 · Zasláno: 18. 11. 2012, 21:33:32
majo80:
Jak vypadá ten první (hlavní) SQL dotaz? Nešlo by je spojit dohromady? |
||
majo80 Profil * |
#5 · Zasláno: 18. 11. 2012, 21:37:01 · Upravil/a: majo80
do { $sql = "SELECT nazov, id FROM produkty ORDER BY nazov"; mysql_query("SET NAMES 'utf8'"); $vysledek = mysql_query("$sql"); while($riadok = mysql_fetch_array($vysledek)) { $load_nazov = $riadok["nazov"]; $load_id = $riadok["id"]; $result = mysql_query("SELECT id FROM druha_tabulka WHERE suvisiaci_produkt='$load_id'"); $oznacit = mysql_num_rows($result); }} while (false); Ale netuším ako by sa dali spojiť, nakoľko vypísať musím všetky produkty a tiež musím zistiť či sa ten ktorý práve vypisujem nachádza aj v druhej tabuľke. |
||
Tori Profil |
Mělo by to jít jedním dotazem:
SELECT t1.id, t1.nazov, COUNT(t2.id) 'pocet' FROM prva_tabulka t1 LEFT JOIN druha_tabulka t2 ON t1.id = t2.suvisiaci_produkt GROUP BY t1.id ORDER BY t1.nazov |
||
Tori Profil |
#7 · Zasláno: 18. 11. 2012, 21:43:16
(děkuju moderátorovi)
|
||
majo80 Profil * |
#8 · Zasláno: 18. 11. 2012, 21:56:58
Tori:
Podľa čoho teraz zistím, či sa to id z prvej tabuľky nachádza aj v druhej tabuľke? |
||
Kajman Profil |
majo80:
A v tabulce druha_tabulka si udělejte index nad sloupcem suvisiaci_produkt, pokud tam ještě není. „Podľa čoho teraz zistím, či sa to id z prvej tabuľky nachádza aj v druhej tabuľke?“ Podle čísla v sloupci pocet. |
||
majo80 Profil * |
#10 · Zasláno: 18. 11. 2012, 22:04:49
Ďakujme veľmi pekne, zajtra sa na to pozriem bližšie, už pri to sedím dlho.. :-)
|
||
Časová prodleva: 11 let
|
0