![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 116 Dołączył: 3.06.2012 Skąd: Lędziny Ostrzeżenie: (0%) ![]() ![]() |
Zastanawiam się jaki jest najoptymalniejszy sposób na wybranie 5 losowych rekordów z bazy danych? Do tej pory raczej bezmyślnie korzystałem z rand() w zapytaniu, ale ta opcja ma bardzo negatywne opinie w sieci, dlatego też zastanawiam się w jaki sposób to zrobić inaczej, a przy tym najbardziej optymalnie jak tylko się da?
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
FLOOR(Max(id)*RND()) zwrca ci jakś konkretną liczbę. I wybierasz id>= od tej liczby. Czasem nie ma ich 5
Jeśli chcesz pseudolosowo wybrać 5 rekordów bez rand, t spróbuj cegoś tkiego: SELECT * FROM `table` WHERE promote = 1 ORDER BY crc32(concat(unix_timestamp(),id)) LIMIT 5 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 06:24 |