コメントを書きすぎるとPL/SQLが遅くなる?

文:Rex Baldazo(TechRepublic) 翻訳校正:原井彰弘
2008-02-15 15:22:02
  • このエントリーをはてなブックマークに追加

 一体どこから湧いて出たのかは知らないが、職場では「OracleのPL/SQLパッケージにコメントを書きすぎると、パフォーマンスに影響を及ぼす」といううわさが蔓延している。つまり、コードにコメントを書くほど動作速度が遅くなるというのだ。

 PL/SQLが逐一解釈されるというのならば、まだ理解できる。なぜなら、コメントもインタプリタによって読み取られるので、それがパフォーマンスに影響を与える可能性はあるからだ。しかし、PL/SQLはデータベース内でコンパイルされるのである。だから、私はなぜコメントが問題になるのか理解できない。

 真実を明らかにする方法は一つしかない。そう、実験を行うのである。そこで、MythBusters(※訳注:米Discovery Channelで放送されているテレビ番組)を精一杯真似し、実験を試みることにした。

 まずは、TABLE1という名前(申し訳ない。怠け者なので、SQLDeveloperでのデフォルトのテーブル名をそのまま使ってしまった)のテーブルの作成から行おう。テーブルには、メソッドの名前を格納するためのvarcharと、開始時刻と終了時刻を格納する2つのtimestampフィールドの、合計3つのフィールドを作成した。DDLは以下のようになる。

create table TABLE1
  (  methodname VARCHAR2(255 BYTE),
     starttime TIMESTAMP (6),
     endtime TIMESTAMP (6)
   )

 続いて、2つのメソッドを持つパッケージを作成した。どちらのメソッドに含まれているコードも簡単なもので、その内容は同一だ。以下に、コメントを含まないバージョンのコードを示そう。

procedure comments_n AS
    counter integer := 0;
    starttime timestamp;
  BEGIN
    starttime := current_timestamp;    

    while counter < 9999999 loop
      counter := counter + 1;
    end loop;    

    insert into Table1(methodname, starttime, endtime)
    values ('comments_n', starttime, current_timestamp);    

    commit;    

  END comments_n;
  • コメント(3件)
#1 chihiro.ishizaw   2008-02-19 10:15:21
オブジェクト名を大文字で統一すると早くなる!という都市伝説?もありましたよね。
解読性は向上するのでコメントもオブジェクトの大文字統一も結構行います。
#2 大野晋一   2008-02-19 10:43:45
大文字!マジですか。いろいろあるのか……
#3 石黒礼   2011-07-12 22:16:20
はじめてコメントさせていただきます
この記事を読んで、私もOracle SQL Developerの環境でSQLを流してみました。

select *
--(コメント3万行)
from table1
--(コメント3万行)
right outer join table2 on xxx
--(コメント3万行)
;
このSQLを流してみたところ
コメントなし→6ms
コメントあり→2000ms
という結果出ました。

PL/SQLとは関係ないかもしれませんが
コメントの話はこういうことではないでしょうか
  • 新着記事
  • 特集
  • ブログ