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
nevt
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


ja bym to spróbował zrobić na 2 zapytaniach, pierwsze
  1. SELECT COUNT(*) FROM `obrazki`;

zakładając, że w zmiennej $count mamy wynik pierwszego zapytania, budujemy w PHP drugie:
  1. <?php
  2. $random = rand(0, $count -);
  3. $sql = "SELECT * FROM `obrazki` LIMIT $random, 1;";
  4. ?>

dla dużych ilości danych nie widzę wydajniejszej metody... nie wymaga przesyłania dużych ilości danych ani sortowania tablic, nie wymaga zakładania specjalnych indeksów w tabeli z której losujemy... życie byłoby jeszcze prostsze, gdyby klauzula LIMIT w MySQL dopuszczała jako parametr coś innego niż stałą liczbową, wtedy można by to zrobić w jednym zapytaniu.

pozdrawiam.

Ten post edytował nevt 16.01.2008, 21:37:54
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: 5.10.2025 - 08:21