穴を避けながらランダムなMySQL行

mysql php random scalability
穴を避けながらランダムなMySQL行

大きなMySQLユーザーテーブルがあり、そこから6つのランダムな行を取得する必要があります(PHPを使用しています)。 テーブルには、自動インクリメントされるインデックス列があります。 唯一の問題は、一部のユーザーがアカウントなどを無効にしているため、一部の行が非アクティブとしてマークされることです。 つまり、行の一部を非アクティブにするため、行をカウントしてからその範囲から乱数を取得することはできません。

RAND()を使用せず、非アクティブなユーザーにクエリを試行せずに、ランダムな行を効率的に取得するにはどうすればよいですか?

ありがとうございます。

  2  0


ベストアンサー

WHERE `inactive` = 0 LIMIT random_offset, 1

ここで、「random_offset」はPHPで事前に計算されます(アクティブユーザーの1から「COUNT」までのランダムとして)。 また、結果は6つの「UNION」クエリで構成されます。

3


RAND()メソッドによる非常に遅い順序を回避したい場合、穴を管理するためのさまざまなオプションを備えたさまざまな選択肢があります

1


タイトルとURLをコピーしました