coldfusion - <cfqueryparam> 如何影响常量和空值的性能?

标签 coldfusion null oracle11g coldfusion-9 cfqueryparam

考虑以下:

<cfquery name="aQuery" datasource="#aSource#">
    SELECT aColumn
      FROM aTable
     WHERE bColumn = <cfqueryparam value="#aVariable#" cfsqltype="#aSqlType#" />
       AND cColumn = 'someConstant'
       AND dColumn is null
</cfquery>

如果我改变
AND cColumn = 'someConstant'


AND cColumn = <cfqueryparam value="someConstant" cfsqltype="#aSqlType#" />

是否有潜在的性能改进?是否有可能损害性能?

如果我对 AND dColumn is null 做同样的事情(使用 cfqueryparam)怎么办? ?

我的发现没有定论。

如果它很重要,假设 ColdFusion9 和 Oracle db 11g。

编辑:

我想重申一下,我询问的是 cfqueryparam 标记专门用于常量和/或空值以及性能改进(如果有)。

最佳答案

Is there a potential performance improvement?



不会。绑定(bind)变量在涉及可变参数时最有用。没有它们,每次查询参数更改时,数据库都会生成一个新的执行计划(这很昂贵)。绑定(bind)变量鼓励数据库缓存和重用单个执行计划,即使参数发生变化。这节省了编译成本,提高了性能。常量确实没有任何好处。由于该值永远不会改变,因此数据库将始终重用执行计划。所以没有太多理由在常量上使用它。

Is there potential to hurt performance?



我见过一些特殊情况的提及,其中在常量上使用绑定(bind)变量实际上可能会降低性能。但这实际上是根据具体情况而定的。
  • http://decipherinfosys.wordpress.com/2007/04/02/scenario-for-using-a-constant-instead-of-a-bind-variable-in-an-oltp-system/
  • http://www.houseoffusion.com/groups/cf-talk/thread.cfm/threadid:24110#121568
  • 关于coldfusion - <cfqueryparam> 如何影响常量和空值的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17574276/

    相关文章:

    java - 输入的值为空:流输出文件夹为空

    eclipse - 防止来自@Immutable 注释的空构造函数

    postgresql - 为什么在检查行类型时 IS NOT NULL 为 false?

    coldfusion - Coldfusion for 循环中是否可以有两个索引?

    sql-server - CF 9's Apache Lucene vs SQL Server' s 全文搜索?

    oracle - ORA-24247: 发送电子邮件 oracle 时网络访问被访问控制列表 (ACL) 拒绝

    java - Hibernate Criteria API 中两个属性之间的日期

    sql - Oracle - 按最后位置为 NULL 值的列排序

    JavaScript onSubmit 验证

    arrays - 如何在 “pool”线程之间划分值范围?