sql >> データベース >  >> RDS >> Mysql

Railsはランダムなレコードを選択します

    私が見たほとんどの例では、これを行うと、テーブル内の行がカウントされ、ランダムな数値が生成されて1つが選択されます。これは、RAND()などの代替手段があるためです。 実際にすべての行を取得してランダムな番号を割り当てるという点で非効率的です。つまり、私が読んだことがあります(データベース固有だと思います)。

    ここ で見つけたようなメソッドを追加できます。 。

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

    これにより、使用するモデルにrandomというメソッドが含まれるようになります。 これは、上記で説明した方法で機能します。テーブル内の行数の範囲内でランダムな数値を生成し、そのランダムな数値に関連付けられた行をフェッチします。つまり、基本的には、フェッチを1回だけ実行します。これは、おそらく好みです:)

    このレールプラグイン もご覧ください。 。



    1. Laravel5でEloquentを使用してピボットテーブルを更新する方法

    2. MySQL GREATEST()関数–引数のリストから最大の引数を検索します

    3. ハッシュIDの非バイナリに対するMySQLバイナリ

    4. 列リストに一致するFULLTEXTインデックスが見つかりません(インデックスが設定されています)