5th August 2011, 23:29
#2
1 out of 1 members found this post helpful.
6th August 2011, 01:00
#3
1 out of 1 members found this post helpful.
Cum a zis Rares, sau, daca ai o coloana ce retine id-uri de exemplu, cu auto increment, poti sa iei ultima valoare (cea mai mare) si sa dai $x=rand(0,$valoare).
22nd September 2011, 15:27
#4
2 out of 2 members found this post helpful.
Desi mai mult ca sigur ai rezolvat problema, scriu doar ca sa ramana scris si pentru altii:
nu folositi ORDER BY rand() pe tabele cu un nr. mare de inregistrari. Nr. mare este definit de server load-ul in momentul in care se face query-ul.
Deoarece rand() intai scaneaza toata tabela si apoi face "accesarea" va dati seama ce inseamna asta la interogarea unei tabele de + 1000 reg care serverste o pagina accesata de XXX internauti!
Mai bine faci doua interogari separate, una in care scoti limitat toate id-urile din tabela si le bagi intr-un array (numai valorile), si, a doua in care poti face un rand() in php precum a scris mai sus lumpy
Daca interogarea se face pe o tabela a caror inregistrari sunt user generated content, in anumite cazuri este suficient un shuffle pe array-ul cu pricina!
Baseline: order by rand() este extrem de greoi in executie.