selectの速度についての問題

このQ&Aのポイント
  • AサーバとBサーバで同じselect文を実行しているが、Aサーバの方が処理に時間がかかっている。
  • AサーバとBサーバのスペックには差があるが、それだけでは差が出るほどの遅さは説明できない。
  • Aサーバでは条件の変更によって処理時間が改善されることがわかった。
回答を見る
  • ベストアンサー

selectの速度について

現在2つのサーバにて全く同じselect文で 速度検証を行っております。 仮にAサーバ(以降A) Bサーバ(以降B) とします。 Aのスペックは CPU:Intel(R) Xeon(TM) CPU 3.20GHz メモリ:2GB Bのスペックは CPU:Intel(R) Pentium(R) 4 CPU 2.80GHz メモリ:2GB select文は以下の様な形です select * from t1,t2 where t1id=t2id~ 検索データ量 t1,t2共に40万件ほど ちなみにA側においては既に稼動しており 軽めの何らかのアクセスは常にある状態です。 上記の条件の元select文を動かした場合 Aについては5分以上かかる状態 Bについては5秒ほどで検索できます。 ココまで差がでてしまうのは何が原因と 考えられますでしょうか? 追記 A側で検索を基本(テーブル結合等)を変更せずに 条件だけを変更した場合数秒で出るようになります。 情報として足りない事がありましたら すみませんが、ご指摘願います。 どなたかヒント(気づき)でも構いませんので お教えお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • alte_6
  • ベストアンサー率60% (9/15)
回答No.1

t2.id(t1.id)のIndexが使用されていないのでしょうか。 explain select~で検索方法を確認した方が良いかと思います。

unhork
質問者

お礼

ありがとう御座います。 一応解決が行えました。 原因としては、最適化(analyze)でした。 毎朝アナライズをかけてはいたのですが、更新頻度 などのゴミのたまり方がやや多かった為毎朝一度だけの アナライズでは追いつかなかったようです。

unhork
質問者

補足

Indexは使用しており explainの結果を記載しておりませんでしたので、 記載しておきます。 A :total cost = 53285 B :total cost = 118269 A explain analyze:時間がかかりすぎているため計測できていません B explain analyze:3373.39 msec 約3秒 となっております。

関連するQ&A

  • sql select文の作り方で困っています

    C#2010で作ったアプリ から sql サーバー2008のデータベースにselect文を発行する際に困っています 検索キーワードが3つあるのですが、3つのキーワードの組み合わせでselect文を発行したいのですが、種類がたくさんできてしまい 困っています 例えば、検索キーワード A、B、Cの3つとすると、以下の組み合わせで7種類ものselect文を作るのが煩わしいです GetData(A) GetData(B) GetData(C) GetData(A,B) GetData(A,C) GetData(B,C) GetData(A,B,C) これらを1つのselect文でさばくには、どうすれば良いでしょうか? ご指導よろしくお願いいたします

  • 速度向上。

    速度向上。 Select A,B,C, (Select Count(*) FROM T_A WHERE SOME_ID = A.SOME_ID ) COUNTER , (Select MAX(REGISTER_TIME)FROM T_A WHERE SOME_ID = A.SOME_ID)MAX_REG_TIME FROM T_A as A WHERE ID LIKE '%1%' GROUP BY ID ORDER BY MAX_REG_TIME; テーブルT_AからIDに1が含まれるデータを全て抽出し、かつそれぞれのカウントを抽出し、かつ最新更新日でソートしたいと思います。 データ数が2000程度のテーブルで30秒ほどの時間がかかります。 より速くする良い方法はありますでしょうか?

    • ベストアンサー
    • MySQL
  • ネットの速度が遅くなりました…

    来年で3年目になるパソコンです。 今まで難なく使えていたのに、急にインターネットが遅くなりました。 ずっと放置しても、半分ほどしかページが表示されなくて、ページを開くのがとにかく遅くて困っています。 インターネット以外は難なく使えます。 パソコンのスペック Windows7 HomePremium 32bit プロセッサ:Celeron(R) Dual-core CPU T3300 @ 2.00GHz 2.00 GHz メモリ:4.00GB (2.93GB使用可能) 解決方などありましたら、教えていただけると嬉しいです><

  • PostgresSQL のSQL文について(SELECT) :2

    テーブル図があまりにもずれているため投稿しなおします。 PostgresであるSelect文がわかりません。 以下のテーブルより *KOUMOKU*[テーブル名] SUB1|SUB2|SUB3|SUB4|SUB5|ID_NAME A01  |    |    |    |   |大項目1 A01  |B01  |    |    |   |大項目2 A01  |B01  |C01  |    |   |大項目3 A01  |B01  |C01  |D01  |   |大項目4 大項目1~大項目4の値(ID_NAME)を一気に取得する SELECT文がわかりません。 「大項目1 大項目2 大項目3 大項目4」という検索結果を得たいです。 よろしくお願いいたします。

  • MySQLのselect文の設定に関して

    MySQLのselect文で、IDを例えば10001~10010までを検索する場合はどうすればいいのか教えて頂けないでしょうか? select * from table_A where ???

    • ベストアンサー
    • MySQL
  • Select文1 マイナス Select文2

    テーブルA ユーザーID,地名,県名,評価 テーブルB ユーザーID,県名,制覇flag のような二つのテーブルがあると仮定してSelect文1、 "select 県名,count(地名) from テーブルA where ユーザーID=1 group by 県名 order by count(地名);" の結果が 県名,count(地名) 北海道,30 東京,22 京都,15 名古屋,10 鳥取,9 沖縄,8 であるとし、 Select文2、 "select 県名 from テーブルB where usrid=1 and 制覇flag='true'" の結果が、 県名 北海道 東京 とします。 このSelect文1の結果から、Select文2の結果を引いて 県名,count(地名) 京都,15 名古屋,10 鳥取,9 沖縄,8 の結果を得るにはどうすればよいでしょうか? Mysqlのバージョンは5.0.21です。

    • ベストアンサー
    • MySQL
  • シムシティ4をプレイしたいのですが・・・

    シムシティ4をやりたいのですが、このPCのスペックでもちゃんと動作するでしょうか? OS:Windows Vista Home Premium CPU:Intel(R) Core(TM)2 Duo T7250 2.00GHz (2 CPUs), ~2.0GHz メモリ:2038MB RAM HDD:288GB グラフィックボード:Mobile Intel(R) 965 Express Chipset Family 358MB PCに詳しくないので、教えていただけたらと思います。 他に判断に必要なスペック情報はありますか?

  • GTA SAの動作環境について

    今更ですが、最近GTA SAがやりたくなってきました、ですが自分のPCのスペックで出来るかどうかわからないので質問します スペックはこんな感じでノートPCです OS Windows7 CPU Intel(R) Celeron(R) CPU 1005M @ 1.90GHz (2 CPUs), ~1.9GHz メモリ 4GB グラフィック Intel(R) HD Graphics です OSとグラフィックに自信がないんですが、、、 回答お願いします

  • サーバーの同時接続ユーザー数算出

    下記サーバーの同時接続ユーザー数の大体の値を算出する方法を教えたもらえないでしょうか。 サーバー内容1 OS: Red Hat Enterprise Linux ES release4(Nahant) CPU: Intel(R)Xeon(R)CPU5160 @ 3.00GHz メモリ:4GB HDD: 300GB サーバー内容2 OS: Red Hat Enterprise Linux ES release4(Nahant) CPU: Intel(R)Xeon(TM)CPU 3.20GHz メモリ:4GB HDD: 73GB 以上よろしくお願いします。

  • RedHat+Core2Duoでローアベが高すぎる

    ハードについて、ほぼ初心者ですが質問させていただきます。 現在、とあるコミュニティサイトを運営しています。 先日、サーバー移転で (CPU)Intel(R)Xeon 5140 @ 2.33GHz + RedHat EL4 のサーバーから (CPU)Intel(R)Core2Duo T7200 @ 2.00GHz + RedHat EL4 のサーバーへ引越ししました。 ところが夜間、アクセスが集中する時間帯になると、サーバーのロードアベレージが10,000%を超えてしまいます。(←`uptime` の結果が100超) 以前のXeonサーバーではロードアベレージが高いときで300%~800%程だったのですが、Core2Duoのサーバーで急激にローアベが高まります。(しかも異常なほど) プログラムソースなどは以前のものをそのまま移しただけなので、この問題はサーバー本体にあるのではないか?と思っています。 ただ、不思議なことに、 1)ローアベが10,000%を超えているにも関わらず、Apacheが落ちる・サーバーが落ちるということはなく、サイトは特に問題なく表示できている。 2)SSHでログインしている場合、問題なくコマンドを打ち込むことができます。 3)`uptime`の結果だけが異常に高い。 このような現象について、何か経験・知識のある方おられましたら、助言していただけたらと思います。 -- 以下、サーバースペック (OS)RedHat Enterprise Linux ES release 4 (WEB)Apache2.2.8 (PHP)php5 (メモリ)2GB (CPU)Intel(R)Core2Duo T7200 @ 2.00GHz