Skocz do zawartości

Losowanie i wybieranie rekordów


Kaviorek

Rekomendowane odpowiedzi

Witam,

jest baza, z ok. 10k rekordów, tekst, ciągle dochodzą nowe,

chcę wybrać z nich te, które mają powyżej 500 znaków,

czyli muszę przeszukać całą bazę, z:

strlen($tekst)>500

co mi daje, np. 4k rekordów (czyli dużo)

i teraz chciałbym z tych 4k rekordów wybrać sobie losowo np. 5, przy każdej odsłonie (czyli często)

i zapewne z RAND() daleko nie zajadę...

czy w takiej sytuacji najlepszym wyjściem będzie zapisanie sobie id tych wybranych rekordów do pliku, czy w bazie, i losowanie tylko z tej puli?

i uaktualnianie spisu raz na jakiś czas... tylko też ich będzie sporo, bo liczone w tysiącach...

czy może jest jeszcze jakiś inny, lepszy sposób?

//edit

dziękuję i pozdrawiam ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Gdybyś chciał bez buforowania w pliku, to można to zrobić w kilku etapach:

  1. select count(id) as ilosc from tabela where length(tekst) > 500; - tutaj oczywiście trzeba znaleźć funkcje zliczającą ilość znaków w kolumnie a już najlepiej trzymać tą ilość w nadmiarowej, indeksowanej kolumnie.
  2. losujemy rekord po stronie klienta (np. w php) $losowy = rand(1, $ilosc); - zapis uproszczony
  3. select * from tabela where length(tekst) > 500 limit $losowy, 1; - no i mamy losowy rekord bez zajeżdżania bazy.

Całość oczywiście można wsadzić w jedną procedurę wbudowaną w bazę danych i po krzyku. Jeżeli w tabeli z danymi zrobisz dodatkową kolumnę, w której będziesz trzymał ilość znaków, to przy takiej małej tabeli baza nawet ni zauważy że ma coś do zrobienia.

bnormalny.jpg

Tam daleko w Himalajach powiesił się słoń na trąbie.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności