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(Force @ 16.01.2008, 21:26:37 ) *
Czyli mam wybrać wszystkie identyfikatory obrazków?
  1. SELECT pid FROM obrazki

tak i zapisz je w jakiejś tablicy. Jeśli dane w tabeli się często nie zmieniają warto by było taką tablicę gdzieś w pliku PHP po prostu zapisać

Cytat(Force @ 16.01.2008, 21:26:37 ) *
I jeszcze jedno pytanie:
Czy funkcja array_rand zapewnia to, że wybrane elementy tablicy nie będą się powtarzać?


W zasadzie to nie zapewnia, ale zawsze możesz sprawdzać, czy dana wartość jest w tablicy (in_array), jest to trochę dłuższe...

Ewentualnie jeśli liczba tych wylosowanych obrazków nie jest krytycznie ważna to możesz posłużyć się statystyką. Czyli w zależności od liczby rekordów losujesz na przykład 12 i robisz zapytanie:

  1. SELECT DISTINCT * -- DISTINCT, żeby rekordy się nie powtarzały
  2. FROM obrazki WHERE pid IN ( (i tu te przykładowe 12 wartości )
  3. LIMIT 10 -- żeby w razie jak wszystkie wartości są różne to aby tylko 10 pierwszych wyników zabrać
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: 26.12.2025 - 11:38