人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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


●質問者: makocan
●カテゴリ:インターネット ウェブ制作
✍キーワード:SELECT SQL SSH サーバー
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● b-wind
●20ポイント

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

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


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

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

◎質問者からの返答

すみません。

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


2 ● nake
●20ポイント

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

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

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

◎質問者からの返答

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


3 ● b-wind
●20ポイント

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

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

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

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


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

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

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

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

人力検索はてな

◎質問者からの返答

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

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分前後かかります。。。

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


4 ● chuken_kenkou
●20ポイント

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

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

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

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



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


5 ● sect
●20ポイント

analyzeしてみてください。

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

◎質問者からの返答

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ