Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] wybieranie losowego wpisu
Force
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 6
Dołączył: 17.05.2007

Ostrzeżenie: (0%)
-----


Witam

Na początku zaznaczam że szukałem na forum i nic nie znalazłem więc jeżeli było to proszę o linka

Pobieram z bazy danych losowe wpisy takim pytaniem:
"SELECT * FROM obrazki ORDER BY RAND() LIMIT 10"
Niestety przy 400 wpisach pytanie wykonuje się ok 0.2s
Czy jest jakiś szybszy sposób na to?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat
RAND() is not meant to be a perfect random generator, but instead is a fast way to generate ad hoc random numbers which is portable between platforms for the same MySQL version.
(źródło)


więc używanie rand() samo w sobie nie jest efektywne. Nie wiem jaki rodzaj danych masz w tej tabeli ale myślę, że lepszym rozwiązaniem byłoby gdzieś zkacheowanie wszystkich ID do tablicy w pliku PHP i potem z niej na poziomie PHP losować id i dać zapytanie:

  1. SELECT *
  2. FROM obrazki WHERE id_obrazka IN ( 12, 142, 195, 543, 834, 2345 ,.... i tak dalej...


Funkcje losującą identyfikatory ze skeszowanej tablicy PHP można łatwo napisać za pomocą funkcji int rand ( [int $min, int $max] )
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 09:06