- ベストアンサー
SQLの実行速度
XMLを解析し、テーブル内を検索するシステムを 作成しているのですが、 ストアドプロシージャ内でSQL文を作成し実行するのと ASP.NET などからSQL文を作成して実行するのとでは、 実行速度に差はでるのものなのでしょうか。 ・SQLServer 2005 ・SELECT の対象テーブルは2~3つのテーブルをINNER JOIN して使う。 ・検索対象の列は実行のたびに異なる。 よろしくおねがいします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
sp_executesqlを使えば、戻り列が変わってもクエリに類似性があるので、既存の実行プランが使われる可能性が高くなり、繰り返し呼び出された場合に多少の効果はあるでしょう。 ASPなどでたとえば以下のようにSQL文をくみ上げるかわりに、 sSQL = "SELECT " & sFields & " FROM TBLA a " & _ "INNER JOIN TBLB b ON b.KEY=a.KEY " & _ "INNER JOIN TBLC c ON c.KEY=a.KEY " & _ "WHERE a.ID=" & iCond ストアドプロシージャ内でSQL文をくみ上げるとしても、EXECUTEではなく、sp_executesqlを使うわけですが。 DECLARE @sql varchar(max) SET @sql = N'SELECT '+@Fields+' FROM TBLA a ' +'INNER JOIN TBLB b ON b.KEY=a.KEY ' +'INNER JOIN TBLC c ON c.KEY=a.KEY ' +'WHERE a.ID=@Cond' EXEC sp_executesql @sql,N'@Cond int',@Cond ただ、Webアプリだったら、モジュールの隠ぺい目的だけでもストアドを使う意味はあると思いますね。
お礼
ありがとうございます。 試してみます。