以下は、非常識な暴言と絶賛です...
すべてのデータを1つのテーブルに残す(パーティション化しない)場合、キーを使用してO(log n)検索時間が発生します。世界で最悪のインデックスである二分木を見てみましょう。各ツリーノードにはキーが1つだけあります。268,435,455(2 ^ 28-1)のツリーノードを持つ完全にバランスの取れたバイナリツリーの高さは28です。このバイナリツリーを16の別々のツリーに分割すると、16,777,215(2 ^ 24-1)の16のバイナリツリーが得られます。高さ24のツリーノード。検索パスは4ノード削減され、高さは14.2857%減少します。検索時間がマイクロ秒単位である場合、検索時間の14.2857%の短縮はゼロから無視できます。
現実の世界では、BTREEインデックスには複数のキーを持つツリーノードがあります。各BTREE検索は、ページ内でバイナリ検索を実行し、別のページにまともな場合があります。たとえば、各BTREEページに1024個のキーが含まれている場合、ツリーの高さ3または4が標準で、実際にはツリーの高さが短くなります。
テーブルのパーティショニングは、すでに小さいBTREEの高さを減少させないことに注意してください。260ミリオン行のパーティションを考えると、同じ高さの複数のBTREEがある可能性すらあります。キーを検索すると、毎回すべてのルートBTREEページを通過する場合があります。必要な検索範囲のパスを満たすのは1つだけです。
次にこれを展開します。すべてのパーティションは同じマシンに存在します。パーティションごとに個別のディスクがない場合、パーティション検索パフォーマンス以外の自動ボトルネックとしてディスクI / Oとスピンドル回転が発生します。
この場合、idのみが有効化される検索キーである場合でも、データベースによる分割では何も購入されません。
データのパーティション分割は、同じクラスに論理的かつまとまりのあるデータをグループ化するのに役立ちます。データが正しくグループ化されている限り、各パーティションを検索するパフォーマンスを主に考慮する必要はありません。論理パーティションを作成したら、検索時間に集中してください。IDのみでデータを分離している場合、読み取りまたは書き込みのために多くのデータ行にアクセスできない可能性があります。今、それは主要な考慮事項であるはずです:最も頻繁にアクセスされるすべてのIDを見つけ、それによってパーティション分割します。アクセス頻度の低いすべてのIDは、「ブルームーンに1回」クエリのインデックスルックアップによってアクセス可能な1つの大きなアーカイブテーブルに存在する必要があります。
全体的な影響は、少なくとも2つのパーティションを持つことです。1つは頻繁にアクセスされるID用で、もう1つは残りのID用です。頻繁にアクセスされるIDがかなり大きい場合、オプションでそれを分割できます。