2

データベース パーティションがデータベース レベルでのみ実装されていることを確認したいだけです。パーティション化されたテーブルをクエリするときは、通常のクエリを実行します。クエリに特別なことは何もありません。最適化はクエリの解析時に自動的に実行されます。それでよろしいですか?

たとえば、「country_code」と「city」という列を持つ「address」というテーブルがあります。したがって、米国ニューヨークのすべての住所を取得したい場合、通常は次のようにします。

select * from address where country_code = 'US' and city = 'New York'

テーブルが 'country_code' でパーティション分割されている場合、クエリは country_code = US を含むパーティションでのみ実行されることがわかっています。私の質問は、SQL ステートメントでクエリするパーティションを明示的に指定する必要がありますか? または、以前のステートメントをまだ使用していて、db サーバーが自動的に最適化しますか?

前もって感謝します!

4

2 に答える 2

4

ジャロッドの答えは正しく、質問に完全に答えていますが、重要な部分が欠けていると思います。

クエリにパーティション列のフィルター条件が含まれていない場合、同じサイズのパーティション分割されていないテーブルよりもパフォーマンスが低下する可能性があります。

City のみをフィルター処理するようにクエリを変更すると、US パーティションのみが使用されず、まだパーティション化されていない同じテーブルに対するクエリよりもパフォーマンスが低下します。

パーティショニングがクエリに役立つ他の唯一の場所は、同じパーティション キーでパーティション分割されたテーブルに結合する場合です。多くの場合、その結合は簡単に並列化できます。それがあなたがしていることではないと仮定します。

于 2010-06-08T17:05:45.540 に答える
1

パーティショニングは、作成するクエリに対して透過的です。照会するパーティションを指定する必要はありません。

データベースは、その下のパーティションを使用してそれに応じて最適化し、理想的には where 句に基づいて検索する必要があるデータまたはインデックスの量を減らします。

于 2010-04-21T01:45:21.863 に答える