语句怎样执行
分析: 对提交的语句进行语法和语义检查
优化: 生成一个可在数据库中用来执行语句的最佳计划
行资源生成: 为会话取得最佳字画和建立执行计划(要执行的一棵树)
语句执行: 完成实际执行查询的行资源生成步骤的输出.
应该考虑废除 RBO 这种优化技术, 而完全使用基于成本的优化技术(CBO)
这里在说一下执行, 就是statspack 中tom 大师很注重那个执行, 实际上, 可以跳过分析, 优化和行资源生成步骤, 反复执行语句, 因为这是目前为止最高效的方法. 只要有可能, 我们都希望建立符合 “分析一次, 执行多次”规则的应用程序, 它极大的减少了CPU的处理量以及系统执行的栓锁数量.
比如: 我们有一个 PL/SQL, 然后在 for 循环中执行 insert 语句 1000 次, 那么利用 tkprof 得到的应该是类似以下的视图:
语句执行流程图
java 中使用绑定变量
String v_id = ‘xxx’;
String v_sql = ‘select name from table where id = ?’; // 嵌入绑定变量
PrepareStatement stmt = con.prepareStatement(v_sql);
stmt.setString(1, v_id); // 为绑定变量赋值
stmt.executeQuery()';
尽可能少做分析
这里的分析, 可以理解为执行一条SQL语句之前的解析, 可以通过 PL/SQL 那种打开一个游标, 然后执行多次语句的方法来减少分析的次数.