Postgresのビューで質問なのですが

SSHでselect * from ビュー名をすると、すさまじい時間がかかって表示されます。
この対策方法はSQLを変更するしかないのでしょうか?
SQLは4つほどのテーブルを結合しております。
※ちなみに、別サーバーのPostgresでは同一のビューは全く遅く感じなく動作します。

回答の条件
  • URL必須
  • 1人50回まで
  • 登録:2008/09/10 17:34:33
  • 終了:2008/09/15 15:17:22

回答(5件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402008/09/10 17:52:31

ポイント20pt

テーブル内容や View で使用しているクエリの情報が無いのでなんともいえませんが、

特に WHERE 指定なしで時間がかかるのはしょうがないじゃないしょうか。


SQLチューニング(3) ~ EXPLAINの実際 — NPO法人 日本PostgreSQLユーザ会

EXPLAIN 句を使用して、JOIN の際に INDEX の張り忘れ等無いか調べるぐらいでしょうか。

id:makocan

すみません。

SQLは貼れない理由がありまして。。。

2008/09/10 18:21:18
id:nake No.2

nake回答回数87ベストアンサー獲得回数02008/09/10 18:00:35

ポイント20pt

今使ってるサーバーと別サーバーの違いをみて調べるしかないと思います。

テーブルに妥当なインデックスが張られていないため、遅いという可能性もあります。

http://q.hatena.ne.jp/answer

id:makocan

そのまま、別サーバーのSQLをエクスポートしているだけなのですが、それでもインデックスが貼られない可能性があるのでしょうか??

2008/09/10 18:21:00
id:b-wind No.3

b-wind回答回数3344ベストアンサー獲得回数4402008/09/10 18:28:51

ポイント20pt

コメント欄が使えないので仕方なく回答欄で。

SQLは貼れない理由がありまして。。。

別に使ってるSQL文そのものでなくても、同じ状況が再現できればいいわけだから。

そうでもしないとまともな回答はもらえませんよというだけなので謝る必要はありません。


そのまま、別サーバーのSQLをエクスポートしているだけなのですが、それでもインデックスが貼られない可能性があるのでしょうか??

同じ内容ならなおのこと EXPLAIN なりで動作に違いが無いかはっきりさせないと。

自分では正しくエクスポート・インポートしたつもりでも手順に間違いがあれば差も出てくるだろうし。

それでも分からなければ、あとはサーバーのスペックや設定も違いを疑ってみるぐらいかな。

人力検索はてな

id:makocan

参考になるか分かりませんが、雰囲気だけのものを記載させていただきました。

SELECT DISTINCT *

FROM テーブル名

JOIN ( SELECT DISTINCT カラム名, min(カラム名), カラム名, カラム名, カラム名

FROM テーブル名

JOIN テーブル名 ON カラム名 = カラム名

JOIN テーブル名 ON カラム名 = カラム名

JOIN テーブル名 ON カラム名 = カラム名

JOIN テーブル名 ON カラム名 = カラム名

WHERE (カラム名 = 3 OR カラム名 = 4) AND カラム名 = 0

GROUP BY カラム名, カラム名, カラム名, カラム名

ORDER BY カラム名

片方の環境では一瞬で、片方のサーバーでは30分前後かかります。。。

サーバースペックは、遅いほうもホスティング会社の専用サーバーを借りております。

2008/09/10 19:47:21
id:chuken_kenkou No.4

chuken_kenkou回答回数722ベストアンサー獲得回数542008/09/10 22:27:23

ポイント20pt

※ちなみに、別サーバーのPostgresでは同一のビューは全く遅く感じなく動作します。

構文としてはまったく同じクエリでも、母体データ件数、ヒットする件数、重複度合い、インデクスの定義などが違えば、まったく異なるアクセス計画になり、性能も全然違ってきます。

インデクスは、検索条件によるデータの絞込みだけでなく、ソートを伴う処理(ORDER BY、GROUP BY、DISTINCTなど)により、作業メモリや作業ファイルを使ったソートを抑止することにも使用されます。

二つのサーバで、EXPLAINを実行してみてください。まったく異なるアクセス計画になっていると思いますよ。



http://http://q.hatena.ne.jp/だみー:title]

id:sect No.5

sect回答回数5ベストアンサー獲得回数02008/09/13 16:55:27

ポイント20pt

analyzeしてみてください。

http://www.asahi-net.or.jp/~AA4T-NNGK/pgsql2.html

id:makocan

皆様、ありがとうございます。

確かにインデックスが貼られていないのが原因だったようです。

ありがとうございましたい。

2008/09/15 15:17:18

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません