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

MySQLは600K行からランダムな10行を高速で選択します

    単純なものからギャップ、ギャップのある不均一なものまで、いくつかのケースを処理する優れた投稿。

    http://jan.kneschke.de/projects/mysql/order- by-rand /

    最も一般的なケースでは、次のようにします。

    SELECT name
      FROM random AS r1 JOIN
           (SELECT CEIL(RAND() *
                         (SELECT MAX(id)
                            FROM random)) AS id)
            AS r2
     WHERE r1.id >= r2.id
     ORDER BY r1.id ASC
     LIMIT 1
    

    これは、IDの分布が等しく、IDリストにギャップがある可能性があることを前提としています。より高度な例については、記事を参照してください



    1. Exachkユーティリティを使用したExadataのヘルスチェック

    2. MySQLの日付形式

    3. SQLServerの指定された位置にあるリストアイテムを見つける方法

    4. SQLでの日時から合計分まで