Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak losowo uporządkować wyniki zapytania i wybrać losowe wiersze. (MySQL)

Jeśli nie masz nic przeciwko poświęcaniu złożoności operacji wstawiania/aktualizacji/usuwania w celu zwiększenia szybkości wybierania, zawsze możesz dodać numer kolejny i upewnić się, że jest on zachowywany podczas wstawiania/aktualizowania/usuwania, a za każdym razem, gdy dokonasz wyboru, po prostu wybierz na jedną lub więcej liczb losowych z tego zakresu. Jeśli kolumna „sekwencja” jest indeksowana, myślę, że jest to mniej więcej tak szybko, jak to możliwe.

Alternatywą jest tasowanie. Dodaj kolumnę sekwencji, wstaw wartości losowe do tej kolumny i za każdym razem, gdy wybierzesz rekordy, uporządkuj według kolumny sekwencji i zaktualizuj wybrane sekwencje rekordów do nowych wartości losowych. Aktualizacja powinna dotyczyć tylko pobranych rekordów, więc nie powinna być zbyt kosztowna... ale warto przeprowadzić kilka testów na zestawie danych.

Może to być dość zła rzecz do powiedzenia, ale i tak to powiem ... czy istnieje potrzeba wyświetlania „losowych” danych? jeśli próbujesz wyświetlić losowe rekordy, możesz robić coś źle.

Pomyśl o Amazonie… czy wyświetlają losowe produkty, czy te popularne i „rzeczy, które inni ludzie kupili, kiedy na to spojrzeli”. Czy SO daje ci listę losowych pytań po prawej stronie, czy listę powiązanych? Tylko trochę do myślenia.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nieprzechwycony wyjątek „PDOException” komunikat „nieprawidłowa nazwa źródła danych”

  2. Szybko zbuduj interfejs PHP CRUD za pomocą zaawansowanego narzędzia generatora CRUD PDO

  3. Spring Boot / JPA / mySQL - relacja wiele do jednego tworzy zbyt wiele zapytań SQL

  4. Atomowa wielorzędowa aktualizacja z unikalnym ograniczeniem

  5. Sortuj tabelę, używając pętli w MySQL z SELECT i UPDATE