sql >> Databáze >  >> RDS >> Mysql

Rails vybere náhodný záznam

Většina příkladů, které jsem viděl a které to dělají, končí počítáním řádků v tabulce a následným generováním náhodného čísla pro výběr jednoho. Důvodem jsou alternativy jako RAND() jsou neefektivní v tom, že dostanou každý řádek a přiřadí jim náhodné číslo, nebo jak jsem četl (a myslím, že jsou specifické pro databázi).

Můžete přidat metodu podobnou té, kterou jsem našel zde .

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

Díky tomu bude mít každý model, který používáte, metodu nazvanou random který funguje způsobem, který jsem popsal výše:vygeneruje náhodné číslo v rámci počtu řádků v tabulce a poté načte řádek spojený s tímto náhodným číslem. Takže v podstatě děláte jen jeden aport, což je to, co pravděpodobně preferujete :)

Můžete se také podívat na tento zásuvný modul pro kolejnice .



  1. Užitečné tipy pro řešení běžných chyb v MySQL

  2. Jak zabránit časovým limitům připojení u velkých importů MySQL

  3. Blockchain:Co to je, jak to funguje a co to znamená pro velká data

  4. SQL ALTER TABLE pro začátečníky