![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 6.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Pisze w dziale przedszkole bo idealnie opisuje to mój poziom wiedzy na temat programowania. Próbuję przerobić pewien skrypt tak by wyświetlał mi losowo wpisy: Obecnie sortowanie jest ustawione malejąco ale zastanawiam się czy mogę tą funkcję dla klasy przerobić na sortowanie losowe.
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 22 Dołączył: 10.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Z twojego postu można wywnioskować że jest to sortowanie po stronie bazy danych. Przemilczę czy ma to sens w taki sposób jaki zaprezentowałeś (sql injection itp.), a swoją odpowiedzią skupie się tylko na sortowaniu w bazie danych.
Ogólnie NIE ZALECA SIĘ sortowania przez jakiś random w zapytaniu SQL z powodu bardzo powolnego działania takiego algorytmu. Co można w takim razie zrobić? Otóż bardzo prostą sztuczkę w zależności od tego jak wyglądają wartości w PK twojej tabeli: - PK Auto increment + brak dziur * Sprawa najłatwiejsza bo pobierasz sobie minimum i maksimum wartości z kolumny, a później losujesz liczbę z tego przedziału i limit + offset w zapyaniu załatwi sprawę + order by na PK ASC. - PK Auto increment + dziury * Sprawa trochę trudniejsza bo musisz pobrać ilość elementów na bazie później z przedziału 0 - max wylosować liczbę i pobrać tak samo jak w poprzednim punkcie - PK jest jakimś typem który się nie sortuje * Nie da się bez RAND w bazie - Widok zmaterializowany * Baza nadal będzie miała problemy jednak dla klienta wyniki będą instant ![]() *Uwaga w każdym z podanych sposobów tracisz możliwość stronicowania wyników. Jeśli chcesz zachować możliwość paginacji jesteś zmuszony zapisywać sobie ziarno z którego losowałeś elementy i na tej podstawie przesuwać wyniki w prawo. Ogólnie nie polecam sortować losowo nigdy więcej z tym problemów niż zysku biznesowego. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 06:32 |