PostgreSQL などの大規模なデータベースから行をランダムに選択することは、パフォーマンスに負荷がかかる作業になる可能性があります。この記事では、この目標を効率的に達成するための 2 つの一般的な方法を検討し、それぞれの長所と短所について説明します。
方法 1: ランダムな値でフィルターする
select * from table where random() < 0.01;
このメソッドは行をランダムに並べ替えてから、しきい値に基づいてフィルター処理します。ただし、テーブル全体のスキャンが必要であり、大規模なデータ セットの場合は時間がかかる可能性があります。
方法 2: ランダムな値で並べ替え、結果を制限する
select * from table order by random() limit 1000;
このメソッドは行をランダムに並べ替えて、上位 n 行を選択します。最初の方法よりもパフォーマンスは向上しますが、制限があります。行グループ内の行が多すぎると、ランダムなサブセットを選択できない可能性があります。
大規模なデータセット向けの最適化ソリューション
多数の行 (この例では 5 億行など) を持つテーブルの場合、次のアプローチにより最適化されたソリューションが提供されます。
WITH params AS ( SELECT 1 AS min_id, -- 最小ID(小于等于当前最小ID) 5100000 AS id_span -- 四舍五入。(max_id - min_id + buffer) ) SELECT * FROM ( SELECT p.min_id + trunc(random() * p.id_span)::integer AS id FROM params p , generate_series(1, 1100) g -- 1000 + buffer GROUP BY 1 -- 去除重复项 ) r JOIN big USING (id) LIMIT 1000; -- 去除多余项このクエリは、効率的な取得のために ID 列のインデックスを利用します。 ID 空間内で一連の乱数を生成し、ID が一意であることを確認し、データをメイン テーブルと結合して必要な行数を選択します。
その他の考慮事項
境界クエリ:
乱数生成時に大きなバッファが必要になるのを避けるために、テーブル ID 列のギャップが比較的少ないことが重要です。
具体化されたビュー:
ランダム データに繰り返しアクセスする必要がある場合は、マテリアライズド ビューを作成してパフォーマンスを向上させることを検討してください。
PostgreSQL 9.5 のテーブルサンプルシステム:
PostgreSQL 9.5 で導入されたこの最適化手法により、指定された割合の行を高速にサンプリングできます。
以上が大規模な PostgreSQL テーブルからランダムな行を効率的に選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

記事では、MySQLで大規模なデータセットを処理するための戦略について説明します。これには、パーティション化、シャード、インデックス作成、クエリ最適化などがあります。

記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]

この記事では、ドロップテーブルステートメントを使用してMySQLのドロップテーブルについて説明し、予防策とリスクを強調しています。これは、バックアップなしでアクションが不可逆的であることを強調し、回復方法と潜在的な生産環境の危険を詳述しています。

この記事では、クエリパフォーマンスを強化するために、PostgreSQL、MySQL、MongoDBなどのさまざまなデータベースでJSON列にインデックスの作成について説明します。特定のJSONパスのインデックス作成の構文と利点を説明し、サポートされているデータベースシステムをリストします。

記事では、外部キーを使用してデータベース内の関係を表すことで、ベストプラクティス、データの完全性、および避けるべき一般的な落とし穴に焦点を当てています。

記事では、準備されたステートメント、入力検証、および強力なパスワードポリシーを使用して、SQLインジェクションおよびブルートフォース攻撃に対するMySQLの保護について説明します。(159文字)


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

メモ帳++7.3.1
使いやすく無料のコードエディター

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ホットトピック



