Tri*_*rly 4 coldfusion null cfqueryparam oracle11g coldfusion-9
考虑以下:
<cfquery name="aQuery" datasource="#aSource#">
SELECT aColumn
FROM aTable
WHERE bColumn = <cfqueryparam value="#aVariable#" cfsqltype="#aSqlType#" />
AND cColumn = 'someConstant'
AND dColumn is null
</cfquery>
Run Code Online (Sandbox Code Playgroud)
如果我改变
AND cColumn = 'someConstant'
Run Code Online (Sandbox Code Playgroud)
至
AND cColumn = <cfqueryparam value="someConstant" cfsqltype="#aSqlType#" />
Run Code Online (Sandbox Code Playgroud)
是否有潜在的性能提升?是否有可能伤害表现?
如果我这样做(使用cfqueryparam)AND dColumn is null怎么办?
我的发现尚无定论.
如果这很重要,请假设ColdFusion9和Oracle db 11g.
编辑:
我只想重申一下,我问的是cfqueryparam标签是专门用于常量和/或空值以及性能再现(如果有的话).
是否有潜在的性能提升?
不可以.当涉及不同的参数时,绑定变量最有用.没有它们,每次查询参数改变时,数据库都会生成一个新的执行计划(这很昂贵).绑定变量鼓励数据库缓存并重用单个执行计划,即使参数更改也是如此.这节省了编译成本,提高了性能.常数确实没有任何好处.由于值永远不会更改,因此数据库将始终重用执行计划.因此没有太多理由在常量上使用它.
是否有可能伤害表现?
我已经看到一些特殊情况的提及,在常量上使用绑定变量实际上可能会降低性能.但这确实是在个案的基础上.