私はPostgreSQL、特にそのパフォーマンスチューニングの新機能を使用しています。基本的には、segmentSize(範囲1〜10)、segmentX(範囲+/- 100,000)、segmentY(範囲+/- 100,000)の3つの整数値を照会することによってアクセスされるデータがあります。PostgreSQLの単一対最適化SELECTパフォーマンスのためのマルチカラムインデックス付け
データボリュームが大きくなると、データを複数のテーブルに分割したり、個々のsegmentSizeごとに1つずつ、および/またはsegmentXとsegmentYの連続した範囲に分割する可能性があります。
現在の選択:キー(segmentSize、segmentX、segmentY)を直接使用するか、パフォーマンスを向上させるために、PostgreSQLの外でsegmentX、segmentYを単一の整数に結合する合成キーを作成します(segmentSize、segmentX、segmentY)
質問:セグメントXからのこの "結合キー"派生のコストについてあまり心配していないと仮定すると、セグメントYが発生しますPosterの外で、パフォーマンスの違いが生じない限り、データの1行あたりのバイト数のオーダーで特別にスペースを確保していないとしたら、 ....罪segmentXとsegmentYの2つの別々のint値の組み合わせを照会するのとは対照的に、segmentX * segmentYの範囲のint値を返すか?
多くの方々に感謝します。 SELECT /読み取りのパフォーマンスを最大限に高めるために、該当するデータとインデックス作成戦略を拡張するリンクを含めてください。
クエリーにEXPLAINとEXPLAIN ANALYZEを使用して、現在進行中の作業と最善の動作を確認し、測定します。 –
ありがとう、フランク! – SashaK
最初に:* natural *主キーは何ですか? Second:あなたの典型的な使い方は何ですか:XまたはY、または{X、Y}または{Y、X}の範囲クエリ?第三に、クエリーのキーフィールドのセットは、「ナチュラル」PKのものとは異なりますか?それは挿入操作のキーフィールドのセットと異なっていますか?第四:3つのキーフィールドのセットから:可能なペア候補キーですか?第5に、キーフィールの意味に関する記述を追加してください。 "segment_id"は私たちのほとんどにはあまり有益ではありません。 – wildplasser