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

クエリの結果をランダムに並べ替えて、ランダムな行を選択する方法。 (MySQL)

    選択の速度を上げるために挿入/更新/削除操作の複雑さを犠牲にしてもかまわない場合は、いつでもシーケンス番号を追加して、挿入/更新/削除時に維持されるようにすることができます。選択を行うときはいつでも、選択するだけです。この範囲内の1つ以上のランダムな数値。 「シーケンス」列にインデックスが付けられている場合、それはあなたが得るのとほぼ同じくらい速いと思います。

    別の方法は「シャッフル」です。シーケンス列を追加し、この列にランダムな値を挿入します。レコードを選択するたびに、シーケンス列で並べ替え、選択したレコードシーケンスを新しいランダムな値に更新します。更新は、取得したレコードにのみ影響するため、コストがかかりすぎないようにする必要があります...ただし、データセットに対していくつかのテストを実行する価値がある場合があります。

    これはかなり悪いことかもしれませんが、とにかく言います...「ランダムな」データを表示する必要はありますか?ランダムなレコードを表示しようとしている場合は、何か問題がある可能性があります。

    アマゾンについて考えてみてください...彼らはランダムな製品を表示しますか、それとも人気のある製品を表示しますか、そして「他の人がこれを見たときに購入したもの」。 SOは、ここの右側にランダムな質問のリスト、または関連する質問のリストを提供しますか?ちょっと考えてみてください。



    1. 2つの停車地名の間のすべての出発時刻と到着時刻を一覧表示するGTFSクエリ

    2. MySQLとMariaDB:知っておくべきこと

    3. MySQLでNOTINの代替

    4. OracleにはSQLServerのテーブル変数に相当するものがありますか?