Cytat
Skoro już narzekasz, że nieoptymalne, to nie polecaj przetwarzania czegoś w PHP i drugiego zapytania...
hmm..
przy tym zapytaniu
Cytat
SELECT * FROM images
WHERE id <= FLOOR( RAND()*(SELECT max(id) FROM images) )+1
LIMIT 1
zawsze bedzie zwracany pierwszy rekord. (tutaj na poczatek wybierasz x rekordow, <nawet cala tabele>, i obcinasz wszystko do pierwszego rekordu)
druga częśc z :
limit x,1 zadziała prawidłowo, ale jest nieoptymalne.
(zmuszasz mysql'a do selecta x+1 rekordow, nastepnie do obciecia puli x - co przy większej ilości danych jest bardzo kosztowne << choc tutaj nie pamietam w 100% dokladnie tego, musialbym doczytac)
moim zdaniem ograniczenie do 5 rekordow, jakie ja zastosowalem, jest mniej kosztowne.
to po pierwsze.
edit: jesli nie wierzysz - sprawdz explainem ilosc rekordow
po drugie, nie jest prawdą że jedno wielkie zapytanie wykona sie szybciej niz kilka mniejszych (nawet z koniecznoscia obrobki po stronie php)
przynajmniej, nie na wydajnym serwerze.
dzięki temu, ze rozbijasz zapytanie na kilka wątków, możesz je wykonać na kilku procesorach.
jesli wysyłasz jedno wielkie zapytanie - wykorzystywany jest tylko jeden procesor...
ot, kwestia skalowania aplikacji. na nieobciążonej maszynie, - tak, pojedyncze zapytanie będzie szybsze, ale na stress testach - wyniki calej aplikacji będą diametralnie różne..
j.