sql >> Database >  >> RDS >> Mysql

Rails selecteren willekeurig record

De meeste voorbeelden die ik heb gezien die dit doen, eindigen met het tellen van de rijen in de tabel en het genereren van een willekeurig getal om er een te kiezen. Dit komt omdat alternatieven zoals RAND() zijn inefficiënt omdat ze eigenlijk elke rij krijgen en ze een willekeurig getal toewijzen, of dat heb ik gelezen (en zijn databasespecifiek denk ik).

Je kunt een methode toevoegen zoals die ik hier heb gevonden .

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

Dit zorgt ervoor dat elk model dat u gebruikt een methode heeft met de naam random die werkt op de manier die ik hierboven heb beschreven:genereert een willekeurig getal binnen het aantal rijen in de tabel en haalt vervolgens de rij op die bij dat willekeurige getal hoort. Dus eigenlijk doe je maar één ophaalactie en dat is wat je waarschijnlijk liever hebt :)

Je kunt ook een kijkje nemen op deze rails-plug-in .



  1. Hoe de testdatabase van Django alleen in het geheugen uit te voeren?

  2. Hoe de sortering van een kolom in SQL Server (T-SQL) in te stellen

  3. Voer een instructie uit via een snelkoppeling in MySQLWorkbench

  4. Herstelapparaat zonder gegevensverlies