愚者の経験

「また今度」はほとんどこない

ADODB.Commandの「Prepared」プロパティ

ADODB.Commandオブジェクトのプロパティの中で
「Prepared」プロパティというものがあるのをご存知ですか?

参考URL:http://msdn.microsoft.com/ja-jp/library/cc426744.aspx

「CommandText」プロパティに設定したSQL文を準備済み(コンパイル済み)にして
初回の実行速度を犠牲にその後のパフォーマンスを改善するものらしいです。

SQL ServerのProfilerで見ると

    cmd.CommandType = adCmdText
    cmd.CommandText = “insert t_test(testid) values(1)”
    cmd.Execute
    cmd.Execute

上記のようにそのまま実行した場合は

sp_executesql SQL文

で実行され、2回目以降の実行も「sp_executesql」です。

    cmd.CommandType = adCmdText
    cmd.CommandText = “insert t_test(testid) values(1)”
    cmd.Prepared = True
    cmd.Execute
    cmd.Execute

「Prepared」プロパティをTrueにしてコマンドを実行すると
1回目の実行が

sp_prepexec

2回目以降の実行が

sp_execute

になります。実行速度については資料が無いのでわかりませんでしたが、
その後の実行で結果的にパフォーマンスで有利と書かれていますので、
使う価値はあるのではないかなと思って最近良く使っています。

特にユーザーに検索条件を入力させるような画面がある場合、
where句のパラメータの値を変更して実行するだけなので、「Prepared」プロパティを使えば
毎回似たようなSQL文を発行しなくて済みます。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。