![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
http://itpro.nikkeibp.co.jp/members/ITPro/oss/20 …
このページにかかれている「Constraint Exclusion」という方式を使用してテーブルのパーティショニングを行ったつもりなのですが、あるデータをSELECT文で検索してみても全てのテーブルに対して検索してしまっているようなのです。
このページに書いてある通りにテーブルを作成したのですが、どこに問題があるのか分かりません・・・。
何か駄目な所があるならば教えてください。お願いします。
No.5ベストアンサー
- 回答日時:
こんにちは。
>気になるのがon,off両方の場合で最初にマスターテーブルを検索している(
>Seq Scan on マスターテーブル名)ようなのです。
例えば、
CREATE TABLE t_base (F1 int,
F2 int,
CONSTRAINT t_base_pkey PRIMARY KEY (F1)
);
でマスタテーブルを定義して
CREATE TABLE t_drive1 INHERITS (t_base);
CREATE TABLE t_drive2 INHERITS (t_base);
・
・
とパーティションを作成したとします。
極端な話、t_baseに10万レコードあり、各パーティションに1レコードしかなく、
あるパーティションにある(例えばt_drive2にある)レコードを検索しようとしても
時間的にはほとんどかわりません。
というのは、最適化してもマスタテーブルであるt_baseは必ず検索されるからです。
この場合は(t_baseとt_drive2が検索されると思われます)
ですから、マスタテーブルにはレコードを格納しないで、すべて子テーブルに
記録しないとパーティショニングの効果は薄れるかと思います。
このへんはドキュメントにもかかれていますのでご確認ください。
No.4
- 回答日時:
こんにちは。
>ですが肝心の処理時間は変わらないままです・・・
設定を変更した後起動しなおしましたか?
EXPLAIN ANALYZE実行したのでしたら、変更前と、
変更後ではコストはどう変化したかを確認してみると
ヒントになるかもしれません。
コストを比較してみるとconstraint_exclusionがonになっている時のほうが少なかったです
しかしTotal Runtimeは変わりませんでした・・・
気になるのがon,off両方の場合で最初にマスターテーブルを検索している(Seq Scan on マスターテーブル名)ようなのです。一応その際のコストは減っているのですが、これでは意味が無いような気が・・・
わかりにくい文ですみません
No.3
- 回答日時:
こんにちは。
>一度全てのディレクトリ内を検索してみたのですがpostgresql.confというファイルは見つかりませんでした・・・。
えっ、ないですか。initdbで複写されるとドキュメントにあるのですが。
potgresql.confがなくてPostgreSQLが起動できるかどうかも
やったことがないのでわからなく、また現状がどうなっているか想像もつかないのですが、
>これは新たに作成しなければならないんでしょうか?
当然、必要不可欠な設定ファイルです。
私なら再インストールまで考慮にいれます。
プラットフォームが何かわかると具体的なコメントがつくかもしれません。
見つかりました
そしてパラメータもonにできました(showコマンドで確認もしました)
explainオプションで試してみたところ条件に該当するテーブルの部分のみ読み込んでいることが確認できました
ですが肝心の処理時間は変わらないままです・・・
何故なんでしょうか?
No.2
- 回答日時:
こんにちは。
>postgresql.confというファイルはどこにあるのでしょうか・・・
普通はdataディレクトリにあります。
または、pgAdminIIIでスーパーユーザでログインして、
ツール→サーバ構成からでも見られます。
一度全てのディレクトリ内を検索してみたのですがpostgresql.confというファイルは見つかりませんでした・・・。
/usr/share/pgsqlにpostgresql.conf.sampleというファイルならあったのですが。
これは新たに作成しなければならないんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SELECT 文の NULL列は?
-
SQLでUPSERTを一度に複数行やる...
-
javaでデータベース上のテーブ...
-
テーブル定義書作成時のIndex付...
-
Postgresqlのレポート機能について
-
テーブルに存在しない列をselec...
-
テーブルを作ろうとしたら。
-
単純なselectが遅くなるのです...
-
最新レコードを抽出し外部結合...
-
SQLクエリで、3つ以上のテーブ...
-
オラクルでいうところのdescとs...
-
一つ前に戻るには…
-
ACCESS アクセスで他のデータ...
-
Accessのテーブルデータを一気...
-
テーブルリンク リンク元を知...
-
お金持ちのテーブル
-
update文で改行を入れる
-
Accessでデータシートに同じデ...
-
テーブル名をカラムとして取得...
-
2台のサーバー間でのテーブル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT 文の NULL列は?
-
テーブルに存在しない列をselec...
-
単純なselectが遅くなるのです...
-
SQLにて指定日付より前、かつ最...
-
SQLでUPSERTを一度に複数行やる...
-
PostgreSQLの断片化の状況を確...
-
javaでデータベース上のテーブ...
-
UPDATE文の更新順序について
-
重複を許すキーの構文がわかり...
-
2つのテーブルで引き算 postgres
-
MS Access から PostgreSQL へ...
-
Postgresのデータ領域の拡張に...
-
テーブル定義書作成時のIndex付...
-
最新レコードを抽出し外部結合...
-
PostgreSQL レコードからアイテ...
-
postgres FILLFACTOR 確認方法
-
VIEWのCOPYってできないんですか?
-
SQLServerでの複数テーブルから...
-
デットロック回避策(autocommit...
-
DBFluteについて質問です。 環...
おすすめ情報