![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 27.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Wygląda to tak: mam plik php, w którym losowany jest obrazek z bazy, jaki powinien być kod by po kliknięciu w dany obrazek, który się pojawi, ten sam obrazek został otworzony na drugiej podstronie (ew. jaki też kod do "odebrania" tego obrazka powinien być na podstronie)?
Obecnie wyświetlanie losowego obrazka mam tak napisane:
mi się wydaje, że trzeba to jakoś na zmiennej GET zrobić lub zmodyfikować jeszcze zapytanie do bazy, ale nie wiem jak... |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
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. Ten post edytował alegorn 22.03.2012, 16:21:12 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 06:10 |