Autor Zpráva
majo80
Profil *
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
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 *
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
majo80:
Jak vypadá ten první (hlavní) SQL dotaz? Nešlo by je spojit dohromady?
majo80
Profil *
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
(děkuju moderátorovi)
majo80
Profil *
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 *
Ďakujme veľmi pekne, zajtra sa na to pozriem bližšie, už pri to sedím dlho.. :-)

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: