MySQLはランダムに一定数のレコードを抽出します

MySQLはランダムに一定数のレコードを抽出します

以前は、このような使用シナリオを処理するために rand() で直接 order していましたが、効率があまり良くありませんでした。そこで最近、このシナリオに再び遭遇し、オンラインでより良い解決策を探しました。

1.rand() による順序付け

書き方:

選択
  id
から
  `テーブル`
注文する
  ランド()

この書き方の場合の欠点は、rand 関数が order by で複数回実行されるため、効率に影響が出ることです。

2. max(id) * rand() をjoinを使って実行する

書き方:

選択
  *
から
  `テーブル` AS t1
参加する (
  選択
    ラウンド(
      ランダム()*(
        (SELECT MAX(id) FROM `table`) - (SELECT MIN(id) FROM `table`)
      ) + (`table` から MIN(id) を選択)
    ) AS ID
) t2
どこ
  t1.id >= t2.id
注文する
  t1.id
制限 1;

ネット上の大物たちはみんな2番目の書き方を推奨しているので、記録しておこうと思います。最大IDと最小IDはプログラム内で計算できる気がします。

ここで問題となるのは、複数のレコードを取得する場合、それらは連続している必要があるため、連続したデータを取得したくない場合はループする必要があることです。ただし、このステートメントは非常に効率的なので、ループクエリを実行できます。

上記は関連する知識ポイントです。困っている友人はそこから学ぶことができます。123WORDPRESS.COM を応援していただきありがとうございます。

<<:  動的テーブルを実装するための要素サンプルコード

>>:  vscodeでnpmを使用してbabelをインストールする方法

推薦する

Nginx ロードバランシング/SSL 構成の実装

負荷分散とは何ですか?ドメイン名が複数の Web サーバーを指している場合は、nginx ロード バ...

MySQL インデックスに関するヒントのまとめ

目次1. インデックスの基礎知識1.1 インデックスの利点1.2 インデックスの有用性1.3 インデ...

小規模プロジェクトで Vue が点滅するのを防ぐ方法

まとめHTML: 要素と v-cloak CSS: [v-cloak]{表示: なし}プロセスページ...

VUEをベースにしたシンプルな学生情報管理システムの実装

目次1. 主な機能2. 実装のアイデア3. コードの実装4. エフェクト表示V. 結論1. 主な機能...

Linux システムでの vim プラグインのインストールの概要

目次vimプラグインマネージャーをインストールするプラグインデモを追加プラグインを削除するには: v...

MySQL トリガー: トリガーの作成と使用

この記事では、例を使用して MySQL トリガーの作成と使用について説明します。ご参考までに、詳細は...

Hタグはウェブページ制作において適切に使用すべきである

HTML タグには、ページのタイトルを処理するための特別なタグがあります。これらは h1、h2、h3...

HTML テーブル マークアップ チュートリアル (2): テーブル境界属性 BORDER

デフォルトでは、テーブルの境界線は 0 ですが、テーブルの境界線を設定できます。基本的な構文<...

el-table カプセル化に基づくドラッグ可能な行と列、および選択列コンポーネントの実装

効果環境が必要ビュー要素UIドラッグアンドドロッププラグインSortable.js必要な構成プロパテ...

HTML フレームセットのサンプルコード

この記事では、Frameset が作成した、できるだけシンプルなフレームワークを紹介します。さて、ま...

HTML、CSS、JSコメントの標準的な使用法の概要

必要なコメントを追加することは、責任感と道徳心のあるフロントエンド開発者が持つべき良い習慣であり、コ...

Linux のバックグラウンドで実行するいくつかの方法 (まとめ)

1. ノーフープハングアップ信号を無視してプログラムを実行する追加メモnohup コマンドは、ハン...

mysql コマンドライン スクリプトの実行例

この記事では、例を使用して MySQL コマンドライン スクリプトの実行について説明します。ご参考ま...

JavaScriptの詳細な分析と方向の変更方法

目次これ方法オブジェクト内これを隠した厳密モードこれを変更してこれいつものように、まずはコードを見て...

VueRouterルーティングの詳細な説明

目次vueルーター1. ルーティングの概念を理解する1.1 ルーティングとは何ですか? 1.2. バ...