2007/07/17

[coldfusion]新人研修-CFQUERYPARAMでメモリ容量を小さくする。

CFQUERYでSELECT文を発行する場合、ならべく、CFQUERYPARAMを使うようにしましょー。

例えば、下のようなCFQUERYタグがあるとします。

<CFLOOP index="clist" list="test1,test2">
<CFQUERY name="hoge" datasource="sample">
SELECT column1
       , column2
  FROM lc_table
 WHERE column3 = '#clist#'
</CFQUERY>
</CFLOOP>

上の場合、CFLOOPによって、2つのCFQUERYタグ(より正確にいうと、SELECT文)が発行されますが、この時、CFは二つのSELECT文を別々のものとして解釈をします。

したがって、CFサーバーのメモリを2つくってしまうことになってしまいます。

一方、CFQUERYPARAMを使って、

<CFLOOP index="clist" list="test1,test2">
<CFQUERY name="hoge" datasource="sample">
SELECT column1
       , column2
  FROM lc_table
 WHERE column3 = <CFQUERYPARAM value="#clist#" CFSQLType = "CF_SQL_VARCHAR">
</CFQUERY>
</CFLOOP>

と表現することによって、メモリを一つにすることができます。

つまり、CFQUERYPARAMを使うことで、CFに余計な負荷をかけずに、パフォーマンスをアップさせることができます。

ここで、CFSQLTypeは、各DBサーバーによって、使える値が変わってくるので、リファレンスで確認しましょー。

ものすごく大切なタグです。

0 コメント:

コメントを投稿