美文网首页
SQL绑定变量

SQL绑定变量

作者: 形式主义_5adc | 来源:发表于2017-11-09 17:32 被阅读0次

    参考来源:SQL绑定变量


    在 SQL 语句中,绑定变量是一个占位符。例如,为了查询员工号为 123 的员工的信息,可以查询:

    1 )select * from emp where empno=123;

    另外,也可以查询:

    2 )select * from emp where empno=:empno 


    在 1)中:每次查询都是一个新查询,即在数据库共享池中以前没有过的查询。每次查询必须经过分析、限定(名称解析)、安全检查、优化等等,简单地说,执行的每条语句在每次执行时都将必须经过编译。

    在第二个查询 2 )中使用了绑定变量 :empno ,它的值在查询执行时提供。查询经过一次编译后,查询方案将存储在共享池中,可以用来检索和重用。在性能和可伸缩性方面,这两者的差异是巨大的,甚至是惊人的。


    什么时候不应该/不必要使用绑定变量?

    a. 如果你用数据仓库,一条大查询一跑几个小时,根本没必要做绑定变量,因为解析的消耗微乎其微。

    b. 变量对优化器产生执行计划有很重要的影响的时候:绑定变量被使用时,查询优化器会忽略其具体值,因此其预估的准确性远不如使用字面量值真实,尤其是在表存在数据倾斜(表上的数据非均匀分布)的列上会提供错误的执行计划。从而使得非高效的执行计划被使用。

    相关文章

      网友评论

          本文标题:SQL绑定变量

          本文链接:https://www.haomeiwen.com/subject/rkdmmxtx.html