• ベストアンサー

クエリの実行時間の目安

クエリのパフォーマンスチューニングを勉強し始めたのですが、クエリの実行時間の良し悪しはどのように判断したらよいのでしょうか? 実行にかかった時間の目安などはあるのでしょうか? ちなみに、MySQL5.5を使用しています。 以上、よろしくお願い致します。

  • MySQL
  • 回答数2
  • ありがとう数9

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>msであれば、まず遅い部類に入らない認識 運用方法によりますけど、1秒かからない処理なら普通に待てるんじゃないですかねぇ とはいえ、きちんとチェックしながら集計文を推敲すれば数倍~数十倍の 高速化ができるケースもあるので、常にチューニングに手を抜かない姿勢が必要ですね もちろん、運用上1分以上とか、10分以上処理に時間がかかるものもあります。 そういうものは予約型のUIを作るなど仕組みを考えないと、使用者が待ってくれません。 逆に定期的な締め処理的なものをいれると、その処理自体は1時間かかっても、 処理後の集計を高速にできたりするので、定型の集計が多い場合は検討すると よいかもしれません。 また、システム側からも継続的な過負荷がかかる処理を何本も走らせられないので 一定の処理待ちが発生した場合タイムアウト処理が必要になります。 たとえば、1時間返ってこない処理は、もしかしたらそのまま1日返ってこないかもしれない むしろ一生返ってこないかもしれないので、どこかで見切りをつける必要があるでしょう

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>実行にかかった時間の目安 データの投入はそれなりに時間がかかるので置いておくとして、 通常の検索処理だとこんなイメージ? 1秒以上かかったら「かなり遅い」 5秒以上かかったら「致命的に遅い」、 10秒以上かかったら「使い物にならないくらい遅い」

nakayama7
質問者

補足

ありがとうございます。 msであれば、まず遅い部類に入らない認識が一般的なのでしょうか?

関連するQ&A

  • SQLServerでのスロークエリについて

    現在、SQLServer2000を使用しているのですが、実行に時間の掛かるクエリを投げた際は、ログを残したいと考えています。 MySQLでのスロークエリと同様似、指定した時間以上掛かった場合ログを残すようなことをSQLServerで出来るのでしょうか。 もしご存知の方がいらっしゃいましたらお知恵を拝借したいです・・・。

  • phpMyAdminのSQLクエリ実行について

    MySQLでデータベースを作ろうとしてphpMyAdminの、SQL>>『テキストファイルの場所』みたいなとこに.sqlのファイルを.gzに圧縮して、"gzip 方式"にチェックをして実行をしようとしましたがいかんせん時間がかかりすぎてなかなか実行できません。.gzのファイルの重さは1000KB足らずなのですが・・・。 1000KBは実行には重いんでしょうか?また、このような状況になったときに他にクエリを実行するにはどうしたらいいでしょうか? クエリはCREATE TABLEとINSERT INTOです。長文失礼しました。

    • ベストアンサー
    • MySQL
  • mysql_queryの処理速度が遅い

    PHP+MySQLでプログラミングをしているのですが、実行時にmysql_queryの処理に時間がかかっています。状況は以下の通りです。 ・処理時間を計測するとmysql_queryの実行に15秒程度かかっています。 ・Webminで直接同じSQL文を実行すると1秒程度で終わります。 ・SQLのコマンドは単純なUPDATEです。 ・indexは設定してあります。 ・DBに格納してあるレコード数は数100件程度です。 ・optimizeは実行してみましたが、あまり効果はありませんでした。 お聞きしたいのはWebminで実行すると1秒程度で終わるSQL文がmysql_queryで実行すると、なぜ時間がかかるのかということです。 mysql_queryで時間がかかる原因およびmysql_queryの処理時間を短縮する方法などがあれば教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • バキューム処理の実行時間の目安

    かなりざっくりな質問で申し訳ないのですが サーバーパフォーマンスは一般的なものとしてお考えいただき 10テーブル カラム平均数15くらいで 1日に蓄積される不要レコードが約5万くらいの場合 vacuumdb の実行時間はどのくらいなのでしょうか。 数秒、数分、30分以上、1時間以上など ざっくりでいいのでご教授ください。 また、これらの情報に関する有益なサイト等ご存知の方いらっしゃいましたら、よろしくお願いします。

  • 複数行のクエリを、まとめて実行するには?mysqli_multi_query()?

    PHPとMySQLの環境です。 複数行のクエリを、まとめて送って取得したいと考えています。 ですが、今試行錯誤しているのですが、うまく行かない状態で、クエリをきちんと実行できません。 処理の流れとしては、 [DBにアクセス]→[2つのクエリの実行]→[データ取得]→[DBをクローズ] でいいのではないかと思ってやっているのですが、 2つのクエリを実行するのはなにやら無理なような記述もウェブ上で拝見しました。 その場合、同じDBの同じテーブル内の異なるデータを取得したいだけなのに、 わざわざ、一度DBにコネクトして、切断、そしてまたコネクトして、切断ということを繰り返さないとダメなのでしょうか。。? そもそも同一PHPファイル内で二度も接続、切断はすべきではないですか? ちなみに、 一つ目のクエリでは、テーブル(table_a)のレコード数をカウントしてPHP側で取得するという流れの処理です。 $query = "SELECT count(*) FROM `table_a`"; もう一つのクエリは、テーブル(table_a)の最新のレコードの、idカラムのidを取得するだけのものです。 $query = "SELECT arrayset FROM `table_a` ORDER BY id DESC LIMIT 1"; この処理を一度のクエリで入れ込むことは可能でしょうか。 それぞれ単独では実行できます。 PHPでこのような関数 mysqli_multi_query() を見つけて色々調べているのですが、 いまだに使用方法がきちんとつかめない状況です。 これで複数のクエリを送ることは可能でしょうか。 アドバイス宜しくお願いします。

    • ベストアンサー
    • MySQL
  • Accessのクエリを実行するショートカットキー

    Access2002を使用しています。 クエリを実行するときに「!」ボタンを使用しますが、これをショートカットキーですることはできますか?自分で作るのではなく、もともとAccessにあるものが存在するか知りたいのです。 よろしくお願い致します。

  • Access2000でクエリーがうまく実行できません。

    Access2000で他のソフトのデータ(クライアントアクセスと呼ばれるODBCを使ってデータをリンクすることができるソフトです)からリンク しているテーブルを2つ使い、あるフィールドを結合させてクエリーを 作成し実行すると”オブジェクトが正しくありません・・・”というような メッセージが表示され、クエリーを実行することができません。 しかし、他のPCではそのクエリーを実行することができます。 実行できないPCでも2つのリンクしたテーブルは単体で中身を見ることが できますので、リンクがうまくいっていないというわけではないと思うのですが・・・。 ちなみにOSはWindows95を使用しています。 Access側で何か足りない機能があるのか、リンクしているソフト側の 問題なのか、またはその他に原因があるのかさっぱり検討がつきません。 何かよいヒントがございましたら、教えてください。

  • SQLの実行時間を測定するには?

    MySQL5.0でMySQL Monitor(コマンドライン)からSQLを実行して、SQLの勉強をしています。 SQLの書き方によって実行時間にどのような影響があるのか知りたいのですが、実行時間の計測方法がわかりません。 ご存知の方がいらっしゃいましたら教えてください。 よろしくお願いします。

  • 1リクエストにおけるsqlの発行回数の目安

    ふと気になったのですが、Webアプリケーションにおいて、1リクエスト中の実行されるsqlの数に目安は あるのでしょうか? システム規模にもよるかと思いますが、目安で、このくらいの規模だったらいくつみたいなものはあるのでしょうか? もちろん、発行回数というよりかは、クエリ処理にかかるトータルの時間を下げるためにクエリ回数をへらることが重要という事ではありますが、存在するようでしたら、目安として発行回数を知っておきたいと思います。 宜しくお願い致します。

  • PHP / MySQL / クエリ実行

    【概要】 PHPからMySQLへのクエリを実行したいのですが、結果が返りません。 【環境】 CentOS5 [PHP5] sakuraインターネット レンタルサーバ スタンダートプランです。 参考:http://www.sakura.ne.jp/rentalserver/matrix.html 【ソース PHP】 ------------------------------------------------------------ $query =  mysql_query(' SET @i := 0; SET @ii := 0; SET @iii := 0; SET @iiii := 0; select `sys_no`,`day`,`counter`,(@iiii := @iiii +1)as `counter2` from (select `sys_no`,`name`,`day`,(@i := @i +1) as `counter` from TBL名 ORDER BY `day` DESC ) as aa where counter BETWEEN (select a.counter from (select `sys_no`,`day`,(@ii := @ii +1) as `counter` from TBL名 ORDER BY day DESC ) as a where sys_no =5) - 1 AND (select a.counter from (select `sys_no`,`day`,(@iii := @iii +1) as `counter` from TBL名 ORDER BY day DESC ) as a where sys_no =5) + 1 '); while ($row = mysql_fetch_array($query)) { 結果取得処理 } ------------------------------------------------------------ ・上記をPHPより実行しますと、「while~」の部分で結果が無いとエラーが返ります。 ・phpMyAdminから直接クエリの部分のみを実行しますと、問題無く結果が返ります。 ・なお、クエリを簡単な一行程度の内容にしますと問題無く実行され、結果が返ります。例:select * from TBL名 ・また、上部にセットしている4つのSETを試しに削除した状態でPHPより実行しますと、結果は返りませんがエラーにはなりません。 以上、アドバイス頂戴できますでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • PHP