Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Losowanie wagowe
Snowak
post 2.03.2008, 21:20:02
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 2
Dołączył: 13.12.2007

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


Witam,
wiem, że było już o tym kilka tematów ale przedstawione tam rozwiązania są zbyt nieoptymalne. To co było tam podane nadaje się co najwyżej do tablicy zawierającej 100 rekordów, a ja mam niestety ponad 50 tysięcy więc muszę wymyśleć jakiś alternatywny sposób.

Skracając trochę zapytanie, które używam na potrzeby tego problemu, wygląda one tak:
  1. SELECT * FROM tabela WHERE points>0 ORDER BY Rand()*(1/points) LIMIT 5


Problem sprawia tutaj klauzula ORDER BY.. próba sortowania tablicy 50k rekordów co około 2 sekundy, to samo(/serwero)bójstwo :|

W jaki inny sposób mogę to zrealizować, nawet jakbym miał losować po jednym rekordzie a nie pięć naraz? Bardzo mi zależy na prędkości działania, mogą być w tym jeszcze jakieś wstawki z PHP bo na nim opiera się cały skrypt.

Osoby słabo znające się na MySQLu proszę o nie odpowiadanie, jeżeli nie rozumiecie tematu... Te zagadnienie niestety nie wygląda na proste.
Go to the top of the page
+Quote Post

Posty w temacie
- Snowak   Losowanie wagowe   2.03.2008, 21:20:02


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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 00:54