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 コメント:
コメントを投稿