Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 6 809 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%)
|
Witajcie,
zna ktoś może inny sposób niż zopytmalizowany ORDER BY RAND() poprzez ID>=FLOOR(1+RAND()*MAX(ID)) ? Chodzi o to, że metoda ma mankament przy nieciągłości ID. Przykładowo: ID 126 0 134 0,666666667 136 0,833333333 137 0,916666667 138 1 Jak z tego wynika pierwsze ID wpada w połowę dolnego przedziału. Ostatecznie zastosowałem PHP, ale być może zna ktoś rozwiązanie na poziomie SQL. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
Podstawowe pytanie: jakiej mniej-więcej wielkości jest pula rekordów spośród których chcesz losować wiersz? Jeżeli jest ona względnie niewielka zwykłe ORDER BY RAND() jest jak najbardziej poprawnym rozwiązaniem. Jeżeli jednak tych rekordów jest sporo skorzystaj z rozwiązania zasugerowanego przez @nospor.
Ten post edytował Crozin 6.08.2014, 10:28:21 |
|
|
|
trueblue Losowy rekord 6.08.2014, 10:07:46
nospor Najlepszy bylby limit, ale do tego musisz uzyc jes... 6.08.2014, 10:20:14
trueblue Crozin, nie jest duża, ale ruch w serwisie jest ba... 6.08.2014, 10:30:30
patryczakowy a co jest w $arr wszystkie rekordy z tabeli? 6.08.2014, 10:33:54
nospor @trueblue ale w swoim rozwiązaniu musisz pobrac ws... 6.08.2014, 10:35:20
Pyton_000 A może po prostu coś takiego:
[SQL] pobierz, plai... 6.08.2014, 10:45:49
trueblue Cytat(nospor @ 6.08.2014, 11:35:20 ) ... 6.08.2014, 10:45:58
nospor Pry 50 rekordach order by rand nie powinno mulic i... 6.08.2014, 10:55:30
Pyton_000 W tym że pobiera tylko jedną kolumnę ID, która jes... 6.08.2014, 11:00:54
Crozin @trueblue: Jeżeli masz raptem 50 rekordów spośród ... 6.08.2014, 11:02:19
mmmmmmm [SQL] pobierz, plaintext SELECT * FROM tabela ORDE... 6.08.2014, 11:06:40
nospor @Pyton faktycznie masz racje. Pobranie jednej kolu... 6.08.2014, 11:10:40
trueblue 1. Moja metoda
2. Nospor ze znikomym opóźnieniem, ... 6.08.2014, 11:28:24
nospor Nom, przy malej liczbie rekordow miejsca 1 i 2 mog... 6.08.2014, 11:32:52
Pyton_000 Jeżeli różnica rzędu 0.03 to taka wielka różnica
... 6.08.2014, 11:38:54
nospor @Pyton przy 50 rekordach nie ma co oczekiwac, ze r... 6.08.2014, 11:41:38
trueblue Dziękuję wszystkim za zaangażowanie i pomysły. 6.08.2014, 11:42:51
Pyton_000 Można jeszcze taką magią:
[SQL] pobierz, plaintext... 6.08.2014, 11:58:59 ![]() ![]() |
|
Aktualny czas: 1.01.2026 - 13:58 |