0

クエリをベンチマークする必要があります-現在、結果セット(FIELD_DATE1)を選択するためのパラメーターを追加すると、SQLの実行時間にどのように影響するかを知る必要があります。dbには管理制限があってdebugが使えません。だから私はクエリを書きました:

SELECT COUNT(*), MIN(XXXT), MAX(XXXT) 
  FROM ( select distinct ID AS XXXID, sys_extract_utc(systimestamp) AS XXXT
              , FIELD_DATE1 AS XXXUT  
           from XXXTABLE 
          where FIELD_DATE1 > '20-AUG-06 02.23.40.010000000 PM' );

クエリの出力は、クエリ実行のリアルタイムを表示しますか

4

2 に答える 2

3

Oracle でのベンチマークに関しては、学ぶべきことがたくさんあります。以下の項目から始めることをお勧めしますが、これらの機能の一部には追加の権限が必要になる可能性があるため、db に十分な制限がないのではないかと心配しています。

  • Explain Plan:すべての SQL ステートメントについて、オラクルは実行計画を作成する必要があります。実行計画は、情報の読み取り/書き込み方法を定義します。つまり、使用するインデックス、結合方法、並べ替えなどです。Explain プランは、クエリがどの程度優れているか、およびインデックスがどのように使用されているかについての情報を提供します。このためのクエリ コストの概念を理解することが重要です。ぜひご覧ください。

  • TKPROF: Oracle トレース ファイルを読み取ることができる Oracle ツールです。Oracle で時限統計を有効にすると、SQL ステートメントをトレースできます。このトレースの結果はファイルに保存されます。これらのファイルは TKPROF で読み取ることができます。TKPROF が表示できる情報の中には、次のものがあります。

  • count = OCIプロシージャが実行された回数
  • cpu = 実行中の CPU 時間 (秒)
  • 経過時間 = 秒単位の実行経過時間
  • disk = ディスクからのバッファの物理読み取り数
  • query = 一貫した読み取りのために取得されたバッファの数
  • current = 現在のモードで取得したバッファの数 (通常は更新用)
  • 行 = フェッチまたは実行呼び出しによって処理される行数

参照: SQL トレースと TKPROF の使用

于 2012-08-21T14:13:04.283 に答える
2

このクエリでSYSTIMESTAMPは、1 回評価され、すべての行に関連付けられた同じ値、または行ごとに 1 回評価されるか、またはその中間にある可能性があります。また、すべての行がテーブルからフェッチされ、SYSTIMESTAMP が各行に対して評価される可能性があるため、クエリ全体にかかる時間を正確に把握することはできません。一般に、SQL 内の評価の順序に依存したり、関数が表示される行ごとに 1 回評価されると想定したりすることはできません。

通常、実行時間を測定する方法は、クライアント ツールを使用してレポートを作成することです。SQLPlus でクエリを実行SET TIMING ONしている場合は、すべてのステートメントの実行時間を報告することができます。他の対話型ツールにもおそらく同様の機能があります。

于 2012-08-21T14:12:42.130 に答える