• ベストアンサー

set timing と autotraceの時間が違う

Oracle DB初心者です。 set timing で取得したselectにかかる時間と autotrace traceonly で取得した実行計画?の時間が違います。 どうしてか教えていただけませんでしょうか。 また、定期的な検索時間の監視を行うにはどちらが適切でしょうか。 Oracle DB 10g standard editionです 以上、よろしくお願いいたします。

  • Oracle
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • dda167
  • ベストアンサー率76% (55/72)
回答No.2

> Oracleの見積もった合計実行時間という認識でよろしいのでしょうか。 Oracleが実行計画を作成するときのパラメータの1つぐらいの認識でよいでしょう。 この値が1秒だから実際の実行時間も1秒じゃないとおかしい…… といった値ではありません。あまり深く考えなくてもよいと思います。 私の場合、Autotraceは軽く実行計画を確認したいときなどに使用します。

yukimasumoto
質問者

補足

ありがとうございました! あまり深く考えなくても良いのですね。

その他の回答 (1)

  • dda167
  • ベストアンサー率76% (55/72)
回答No.1

Autotraceが出力する実行計画のTime列は Oracleが見積もった時間で、実際の実行時間ではありません。

yukimasumoto
質問者

補足

ありがとうございます。 追加で質問させてもらってよろしいでしょうか。 Autotraceで表示されるTime列の合計は、Oracleの見積もった合計実行時間という認識でよろしいのでしょうか。 以上、よろしくお願いいたします。

関連するQ&A

  • Oracle SQL実行時間について

    Oracle初心者です。 あるテーブル(レコード数:100万件程度)に対してSelectするSQLの実行時間を、Oracleのset timing on, set autotrace onlyで計測しました。 結果は1000ms程度だったのですが、 同じSQL文を実行するプログラム(java)を作成し、pstmt.executequery()してresultsetからデータをgetするまでの時間をログに出力させたところ、400ms程度でした。 プログラムの性能目標として、set timing on の値を設定していたため、実際の結果(javaプログラムが出力した処理時間)の評価に困っています。 差がでる原因をご教示いただけませんでしょうか。 宜しくお願いします。

  • 実行計画(EXPLAIN PLAN、AUTOTRACEの違い)

    こんにちは。 SQLの実行計画を確認するEXPLAIN PLANとAUTOTRACEについて質問です。 先日、仕事でSET AUTOTRACE TRACE EXPで出力された実行計画と EXPLAIN PLANで出力された実行計画が違うということがありました。 なぜこのようなことが起こるのでしょうか? そしてこのようなことがあった場合、どちらの実行計画がSQL走行時に使われるのでしょうか?

  • DATE型カラムのインデックスが効かない

    Oracle初心者です。 以下のような2種類のSQLをSQLPLUSで実行し、 実行計画を取得しました。 end_timeでfilterをかける際に、"TABLE ACCESS FULL"となっており、貼っているインデックスが使われていないことがわかりました。 #これがSQLの遅い主要因と考えています。。。。勘です。 インデックスが活用されていない原因としてはどのようなものが考えられるのでしょうか。 宜しくお願いいたします。 1) set autotrace traceonly select * from t_sample where end_time >= '2009-08-25' and end_time <= '2009-11-26' 2) set autotrace traceonly select * from t_sample where end_time >= to_date('2009-08-25', 'yyyy-mm-dd') and end_time <= to_date('2009-11-26', 'yyyy-mm-dd')

  • 【Oracle】ADOでSELECT * FROM ・・・・ を実行すると処理が遅いんです

    言語:VisualBasic DB:Oracle ADOでOracleにアクセスしているのですが、1件目のデータを取得する時に ものすごく時間がかかるんです。 たとえば  SELECT * FROM AAA を実行し、1件目のデータを取得するまでに20秒かかっています。 しかし SELECT BB,CC FROM AAA を実行すると、1秒もかからずに1件目のデータを取得できます。 今回はじめてADOを使っての作業なのですが、DAO・RDO・OO4Oなどでは このような現象は見られませんでした。 これはこういうものなのでしょうか? それとも何か原因があるのでしょうか? よろしくお願いします。

  • オラクルDBからのデータ取得について

    こんばんわ。 オラクル(sqlplus)についての質問2点です。 (1)シェルからオラクルDBへアクセスし、データを取得したいのですが、  select時に、結果のヘッダーをつけずに結果(データ)のみをファイル出力することは可能でしょうか? (DB2で言うところの「-x」オプションのような・・・) (2)エラー時にSQLコードを取得したいのですが、SQLコードをファイル出力することは可能でしょうか? オラクルは初心者で、行き詰まってしまいました・・・ どうかよろしくお願いします。

  • Oracleのデータをマージする

    以前、MySQLでのマージ方法について質問した者です。 今度は、Oracleでのマージ方法ですが、 重複行が発生して困っております。 状況としては、スキーマが二つあります。db1とdb2です。 それぞれ、同じ構造のテーブルを持っていて、格納しているデータだけが違います。 db1にdb2をマージしようとしているのですが、上手くいきません。(重複行が発生します) 方法として、以下の2パターンを試行しました。 (1)インポート    db1をインポートした後に、同じスキーマにdb2からのダンプファイルでインポート   (2)ダイレクトパスインサート    insert/*+ APPEND */ into db1.myTable (SELECT * FROM db2,myTable);. 以下は当方の使用環境です。 Windows7 Pro 64Bit Oracle11g Standard Edition 他に必要な情報があればお聞かせください。 よろしくお願いします。

  • SQL実行時の負荷、処理時間確認

    oracle 10g Release 10.2.0.2.0を使用しています。 SQLにてDELETE文実行時のサーバ負荷、処理時間を確認したく、 次のSQLを実行しましたが、「V$SQLが無い」と怒られました。 SELECT * FROM V$SQL; oracleのバージョンを確認するSQL(select * from v$version;)は 問題なく実行できます。 V$SQLが使用できない理由、もしくは別の方法で処理負荷、処理時間を 確認できる方法とうあれば教えていただきたいです。 宜しくお願いします。

  • DB接続とネット環境

    OS:WinXPPro オラクル10G DB オラクルはあまり詳しくなく、勉強中の初心者です。 環境は1台のPCにOracle10G DB、クライアントをインストールして利用。 オラクル10GをインストールしてDBも作成しました。 その後、DBは利用できましたが、ネット環境が使えなくなりました。 IPアドレスの関係でネットが利用できない(CATV利用でIPアドレスが自動取得しか利用できない)と思われます。 TCP/IPの設定でIPアドレスを入力してオラクル環境を利用しています。 ネット環境もオラクル環境を利用するにはどうすれば良いでしょうか? よろしくお願いします。

  • 予約可能時間の出し方

    php独学(数ヶ月)の初心者です。 予約を管理するプログラムを自分でつくっています。 調べても調べてもどの関数をどのように使えば 良いかわからないまま数日がたってしまいました。 (初心者のため知らずに勉強し始めてしまった非推奨のmysql関数等を とりあえずまだ使用しています。mysql関数で教えていただければと思います。 ある程度理解を深めた時点できちんと勉強しなおします) ■予約の概要 コースごとに取得できる予約時間が決まっています。 予約時間の30分後から矯正が始まり、その1時間後に終了します。 (予約時間に来店、30分間マシーンに乗り、その後先生の矯正が 1時間ある。) ■作成したDB [DB01]予約時間テンプレート:time1 コースごとに取得できる予約時間が決まっています。 (以下はあるコースの予約可能時間のテンプレです。) id, time(time型) 1,10:15 2,11:45 3,14:30 4,16:00 5,17:30 6,19:00 [DB02]予約済みを貯めたDB:booked (時間はすべてtime型) id,name,time,start,finish,course 203,tanaka,10:00,10:30,11:30,a 101,abe,14:30,15:00,16:00,a 112,yoshida,17:00,17:30,18:30,c ■質問 [DB01]のうち予約可能な時間のみ<select>文で表示させたい。 ちなみ(予約可能な時間)は、11:45,16:00,19:00の3つです。 色々考えましたが、今の自分の実力では上記を実行させるコードが断片的に しか分からずお手上げとなりました。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • Oracle上のテーブルからCREATE TABLE文をGenerateする方法

    Oracle上に既にあるテーブルからCREATE TABLE文を生成する方法はありますか? Oracle 10g R2 Enterprise Edition Windows 2003 Server Standard R2