PostgreSQL の発見の旅
Postgres にはいくつかのインデックス タイプがあり、新しいバージョンごとにいくつかの新しいインデックス タイプが追加されるようです。各インデックス タイプは便利ですが、どのタイプを使用するかは、(1) データのタイプ、場合によっては (2) テーブル内の基になるデータ、および (3) 実行される検索のタイプによって決まります。次のコンテンツでは、Postgres で使用できるインデックスの種類と、どのような場合にどのインデックスの種類を使用する必要があるかを紹介します。始める前に、ここで説明するインデックス タイプのリストを示します:
Bツリー
一般化転置インデックス (GIN)
一般化反転検索ツリー (GiST)
スペース分割された GiST (SP-GiST)
ブロック範囲インデックス (BRIN)
ハッシュ###
それではインデックス作成から始めましょう。
標準の CREATE INDEX ステートメントを実行すると、B ツリー インデックスが作成されます。 B ツリー インデックスは、テキスト、数値、タイムスタンプなど、ほとんどのデータ型で役立ちます。データベースでインデックスを使い始めたばかりで、データベースで Postgres の高度な機能をあまり使用していない場合は、標準の B ツリー インデックスを使用するのがおそらく最良の選択肢です。
複数値列の GIN インデックス 汎用逆索引 (一般に GIN と呼ばれます) は、単一の列に複数の値が含まれるデータ型に最も適しています。
Postgres ドキュメントによると:
"GIN は、インデックス付けされているエントリが複合値であり、インデックスによって処理されるクエリが複合エントリ内で発生する値を検索する必要がある状況を処理するように設計されています。たとえば、このエントリはドキュメントである可能性があります。 、クエリはドキュメントに含まれる値を検索できます。文字を指定してください。"
この範囲に含まれる最も一般的なデータ型は次のとおりです:
hストア
配列###
範囲###
JSONB
GIN インデックスで最も満足できる点の 1 つは、複合値に格納されたデータを理解できることです。ただし、GIN インデックスには追加される個々の型のデータ構造に関する特定の知識が必要であるため、すべてのデータ型が GIN インデックスでサポートされているわけではありません。
GiST インデックス、値が重複する行の場合
全文検索が必要なテキスト タイプ
GiST インデックスのサイズには多くの固定制限があり、そうしないと、GiST インデックスが非常に大きくなる可能性があります。その代償として、GiST インデックスには損失が生じます (不正確)。
公式ドキュメントによると:
これは、誤った結果が得られるという意味ではなく、Postgres がデータを返す前にこれらの誤った結果をフィルタリングするための小さな追加作業を行うことを意味します。
特記事項: GIN インデックスと GiST インデックスは、多くの場合、同じデータ型で使用できます。通常、パフォーマンスは優れていますが、多くのディスク領域を占有し、その逆も同様です。 GIN と GiST に関しては、あらゆる状況で機能する万能のソリューションはありませんが、上記のルールはほとんどの一般的な状況に適用されるはずです。
大規模データ用のSP-GiSTインデックス
空間分割 GiST (SP-GiST) インデックスは、Purdue Research の空間分割ツリーを採用しています。 SP-GiST インデックスは、データに自然なクラスタリング要素があり、バランスの取れたツリーではない場合によく使用されます。電話番号はその良い例です (少なくとも米国の電話番号はそうです)。形式は次のとおりです:
3桁の市外局番
3 桁のプレフィックス番号 (古い電話交換機に関連)
4桁の回線番号
これは、最初のセットの最初の 3 桁に自然なクラスタリング係数があり、次に 2 番目の 3 桁セットが続き、数値が均等に分散されることを意味します。ただし、電話番号の一部の市外局番では、他の局番よりも飽和状態が高くなります。その結果、非常にバランスの悪いツリーが作成される可能性があります。フロントには自然な集約要素があり、データは均等に分散されていないため、電話番号などのデータは SP-GiST に適している可能性があります。
ブロック範囲インデックス (BRIN) は、SP-GiST などのいくつかの状況に焦点を当てており、データに自然な順序があり、データ量が多くの場合に大きい場合に最適です。時系列順に 10 億件のレコードがある場合、BRIN が役立つ可能性があります。複数の郵便番号など、自然にグループ化された大規模なデータ セットをクエリする場合、BRIN を使用すると、同様の郵便番号がディスク上の近い場所に保存されるようにすることができます。
日付または郵便番号でソートされた非常に大規模なデータベースがある場合、BRIN インデックスを使用すると、一部の不要なデータを非常に迅速にスキップまたは除外できます。さらに、BRIN インデックスは全体のデータ サイズに比べて比較的小さいため、大規模なデータ セットがある場合は BRIN インデックスの方がパフォーマンスが向上します。
ハッシュインデックス、ついにクラッシュの心配がなくなるハッシュ インデックスは Postgres に長年存在していましたが、Postgres 10 がリリースされるまでは、その使用について大きな注意事項があり、WAL に記録されませんでした。つまり、サーバーがクラッシュし、スタンバイにフェイルオーバーできないか、wal-g などを使用してアーカイブから復元できない場合、インデックスを再構築するまでそのインデックスは失われます。 Postgres 10 のリリースにより、これらは WAL に記録されるようになったので、再び使用することを検討するかもしれませんが、本当の問題は、使用すべきかどうかです。
ハッシュ インデックスは、B ツリー インデックスよりも高速な検索を提供する場合があり、作成も高速です。最大の問題は、これらの比較演算が「等価」比較演算のみに制限されているため、完全一致検索にしか使用できないことです。このため、ハッシュ インデックスは一般的に使用される B ツリー インデックスよりも柔軟性が大幅に低くなり、代替品としてではなく、特殊な場合のインデックスとして考える必要があります。
どれを使うべきですか?ここまでたくさん紹介してきましたが、少し怖がっていてもそれは正常です。これを事前に知っていれば、CREATE INDEX は常に B-Tree を使用してインデックスを作成します。幸いなことに、Postgres はほとんどのデータベースで非常に優れたパフォーマンスを発揮します。 :) さらに Postgres 機能の使用を検討している場合は、他の Postgres インデックス タイプを使用する場合のチートシートを以下に示します:
B ツリー - ほとんどのデータ型とクエリに適しています
GIN - JSONB/hstore/arrays 用
GiST - 全文検索と幾何学的データ型に適しています
SP-GiST - 自然な集計要素はあるものの、不均一に分散している大規模なデータ セットに適しています
BRIN - シーケンシャルな順序を持つ非常に大規模なデータセットに適しています
ハッシュ - 等価演算には適していますが、通常は B ツリー インデックスだけで十分です。
この記事に関してご質問やフィードバックがございましたら、お気軽に Slack チャンネルにご参加ください。
以上がPostgreSQL の発見の旅の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Linuxオペレーティングシステムのコアは、コマンドラインインターフェイスで、コマンドラインを介してさまざまな操作を実行できます。 1.ファイルおよびディレクトリ操作は、ファイルとディレクトリを管理するために、LS、CD、MKDIR、RM、その他のコマンドを使用します。 2。ユーザーおよび許可管理は、useradd、passwd、chmod、その他のコマンドを介してシステムのセキュリティとリソースの割り当てを保証します。 3。プロセス管理は、PS、Kill、およびその他のコマンドを使用して、システムプロセスを監視および制御します。 4。ネットワーク操作には、Ping、Ifconfig、SSH、およびネットワーク接続を構成および管理するためのその他のコマンドが含まれます。 5.システムの監視とメンテナンスは、TOP、DF、DUなどのコマンドを使用して、システムの動作ステータスとリソースの使用を理解します。

導入 Linuxは、柔軟性と効率性により、開発者、システム管理者、およびパワーユーザーが好む強力なオペレーティングシステムです。しかし、頻繁に長く複雑なコマンドを使用することは退屈でERです

Linuxは、サーバー、開発環境、埋め込みシステムに適しています。 1.サーバーオペレーティングシステムとして、Linuxは安定して効率的であり、多くの場合、高電流アプリケーションの展開に使用されます。 2。開発環境として、Linuxは効率的なコマンドラインツールとパッケージ管理システムを提供して、開発効率を向上させます。 3.埋め込まれたシステムでは、Linuxは軽量でカスタマイズ可能で、リソースが限られている環境に適しています。

はじめに:Linuxベースの倫理的ハッキングでデジタルフロンティアを保護します ますます相互に接続されている世界では、サイバーセキュリティが最重要です。 倫理的なハッキングと浸透テストは、脆弱性を積極的に特定し、緩和するために不可欠です

基本的なLinux学習の方法は次のとおりです。1。ファイルシステムとコマンドラインインターフェイス、2。LS、CD、MKDIR、3。ファイルの作成と編集などのファイル操作を学習するマスター基本コマンド、4。

Linuxは、サーバー、組み込みシステム、デスクトップ環境で広く使用されています。 1)サーバーフィールドでは、Linuxは、その安定性とセキュリティにより、Webサイト、データベース、アプリケーションをホストするための理想的な選択肢となっています。 2)埋め込みシステムでは、Linuxは高いカスタマイズと効率で人気があります。 3)デスクトップ環境では、Linuxはさまざまなユーザーのニーズを満たすために、さまざまなデスクトップ環境を提供します。

Linuxの欠点には、ユーザーエクスペリエンス、ソフトウェア互換性、ハードウェアサポート、学習曲線が含まれます。 1.ユーザーエクスペリエンスは、WindowsやMacOほどフレンドリーではなく、コマンドラインインターフェイスに依存しています。 2。ソフトウェアの互換性は他のシステムほど良くなく、多くの商用ソフトウェアのネイティブバージョンがありません。 3.ハードウェアサポートはWindowsほど包括的ではなく、ドライバーは手動でコンパイルされる場合があります。 4.学習曲線は急で、コマンドラインの操作をマスターするには時間と忍耐が必要です。

linuxisnothardtolearn、butthedifficultydependsonyourbackgroundandgoals.forthosewithosexperience、特にcommand-llinefamparsition、linuxisaneasyytransition.beginnersmayteeper relearningcurvebutcanagewithpersources.linux'sopen-sourcenature


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

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

WebStorm Mac版
便利なJavaScript開発ツール
