Autor Zpráva
Cleo2
Profil *
Ahoj,

mám tento skript:

$result  = mysql_query("SELECT * FROM tags ORDER BY nazev");
while($row1 = mysql_fetch_array($result))
{
                        echo "$row1[nazev]<br>";
            $result2  = mysql_query("SELECT * FROM games ORDER BY rand() LIMIT 4");
            while($row = mysql_fetch_array($result2))
            {
            vypis($row);
            }
}

Položkám z tabulky TAGS (cca 30 řádků) jsou náhodně přiřazeny 4 položky z tabulky GAMES (cca 5 000 řádků), funkce vypis() jen vypisuje hodnoty. Momentálně se skript provádí nezvykle dlouho (2-3 vteřiny). Jde ten sql dotaz nějakým způsobem zkrátit/sloučit whatever, aby to bylo rychlejší? Dík
Tori
Profil
Cleo2:
Výběr náhodných her by šel provést jen jednou (mimo cyklus, limit 120 *), pak uvnitř cyklu číst po čtyřech řádcích z tohoto výsledku. Ale v tom případě se už ty hry nebudou opakovat - nevím, nakolik vám to vadí nebo ne.

* přesněji: 4 x (počet řádků v tabulce tags)
Joker
Profil
Původně jsem psal jsem zhruba totéž co Tori, ale předběhla mě :)

Tak jen doplním, že by to řešení mělo ještě ošetřit situaci, kdy v tabulce games není dost řádků, neboli jich je méně než 4 (počet přiřazovaných položek) krát počet řádků v tabulce tags. Jde to zařídit celkem jednoduše, prostě když se už nenačte další řádek, tak ten dotaz* provést znovu.

* ten dotaz = náhodný select z tabulky games
Cleo2
Profil *
Super dík, zrychlilo se to parádně :)

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: