0

インデックス付きの大きなテーブルを分割するとパフォーマンスが向上するかどうかを確認するテストを行いました。

元のテーブル: 20000 行。サブテーブル: 4x5000 行。

メイン テーブルは 4 つのテーブルに分割され、すべてのテーブルにインデックスが付けられます。テストでは、より正確なクエリ時間を測定するために、各 SQL クエリがループで 10000 回実行されました。

テーブル内のインデックス付きの列を検索すると、パフォーマンスに違いは見られず、元の (20000 行) テーブルと新しい (5000 行) テーブルのクエリ時間は同じです。

すべてのテーブルのインデックスを削除して、インデックスを作成せずに同じテストを試みたところ、パフォーマンスの違いは明らかで、サブ テーブルでの検索は、大きなテーブルでの検索よりも 6 倍高速でした。しかし、インデックスを作成してもパフォーマンスは同じでした。

私のテーブルを小さなテーブルに分割するのは時間の無駄だと思いますか?

注: 20000 サイズはテスト用です。実際のデータは 100M 以上のサイズになります。

4

2 に答える 2

0

はい、時間の無駄です。データベースは数百万の行を簡単に処理でき、20,000 は比較的小さいです。お気づきのように、インデックスを使用するとデータをすばやく見つけることができます。ほとんどの場合、データのサイズはルックアップの速度に顕著な影響を与えません。サイズの違いが 100 倍または 1000 倍の場合、クエリはさらに数ミリ秒かかる場合がありますが、作業しているスケールでは実際の違いはありません。

于 2013-02-04T17:41:00.740 に答える
0

あなたが効果的に行ったことは、テーブルのパーティション化を再発明したことです。私はあなた自身のサブテーブルスキームを使用せず、パーティション化されたテーブルの使用に焦点を当てることは、内部的にサブテーブルが使用されることを自動的に意味し、SQLを適切に定式化すると、必要がなければサブテーブルは操作から自動的に除外されます.

ただし、パーティションの管理はすべてサーバー自体で行われるため、クライアント コードをシンプルに保つことができ、1 つのテーブルを扱うだけで済みます。

于 2013-02-04T22:23:58.747 に答える