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

Szyny wybierają losowy rekord

Większość przykładów, które widziałem, kończy się liczeniem wierszy w tabeli, a następnie generowaniem losowej liczby, aby wybrać jedną. Dzieje się tak, ponieważ alternatywy, takie jak RAND() są nieefektywne, ponieważ faktycznie pobierają każdy wiersz i przypisują im losową liczbę, a przynajmniej tak czytałem (i myślę, że są specyficzne dla bazy danych).

Możesz dodać metodę podobną do tej, którą znalazłem tutaj .

module ActiveRecord
  class Base
    def self.random
      if (c = count) != 0
        find(:first, :offset =>rand(c))
      end
    end
  end
end

To sprawi, że każdy używany model będzie miał metodę o nazwie random który działa w sposób opisany powyżej:generuje liczbę losową w ramach liczby wierszy w tabeli, a następnie pobiera wiersz powiązany z tą liczbą losową. Więc w zasadzie robisz tylko jedno pobieranie, co prawdopodobnie wolisz :)

Możesz także rzucić okiem na tę wtyczkę rails .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. przesyłanie wielu obrazów niewłaściwa ilość podczas przesyłania pliku

  2. Mysql Połącz dwie kolumny podczas wyszukiwania za pomocą LIKE

  3. Zmiana klucza podstawowego MySQL, gdy istnieją ograniczenia klucza obcego

  4. Używasz 'OR' między klauzulą ​​HAVING i WHERE w MySQL?

  5. MySQL:jak uzyskać różnicę między dwoma znacznikami czasu w kilka sekund