2007.08.16

[T-SQL]リテラル値と変数

既に運用中のシステムから新しいシステムへの移行などの場合
既存のデータをそのまま使えれば良いですが
ほとんどの場合は新システム用にデータのコンバート作業を行います。

このコンバート作業。小さなシステムでデータも少なければ
地道に手動でこつこつと作業を行うのも良いかもしれません。
しかし、小さなシステムであろうとなかろうと、1度のコンバートで
うまく行くというのは稀です。
何度も同じ手順を繰り返すのであれば、必ずコンバート用プログラムを作成します。

で、今回はそんなコンバートプログラムで発生した実行速度の違いです。(前置き長い・・・)

何回にも分けて作業を行う必要があり、それぞれでとあるコードの値が違うため
そのコード部分については変数にして毎回渡すような形にしていました。
データの件数にも関係があるようですが、単純なInsert文なのに非常に遅く、
1回きりなら我慢できても、あと数十回実行する気には到底なれません。

そこで試行錯誤を繰り返してみたところ、この変数をリテラル値に変えるだけで
劇的に速度がアップしました。

実際の開発では、リテラル値を定数化することなくソースに記述することは
弊社では完全に禁止しています。
しかしこういったコンバート作業のように繰り返し使うことは想定していても、
日常の業務として使うプログラムでなければ許容する柔軟性も持ち合わせてよいのではないかと思います。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
nakamura