05 语句处理

语句怎样执行

分析: 对提交的语句进行语法和语义检查

优化: 生成一个可在数据库中用来执行语句的最佳计划

行资源生成: 为会话取得最佳字画和建立执行计划(要执行的一棵树)

语句执行: 完成实际执行查询的行资源生成步骤的输出.

应该考虑废除 RBO 这种优化技术,  而完全使用基于成本的优化技术(CBO)

这里在说一下执行, 就是statspack 中tom 大师很注重那个执行, 实际上, 可以跳过分析, 优化和行资源生成步骤, 反复执行语句, 因为这是目前为止最高效的方法. 只要有可能, 我们都希望建立符合 “分析一次, 执行多次”规则的应用程序, 它极大的减少了CPU的处理量以及系统执行的栓锁数量.

比如: 我们有一个 PL/SQL, 然后在 for 循环中执行 insert 语句 1000 次, 那么利用 tkprof 得到的应该是类似以下的视图:

image

语句执行流程图

image

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 那种打开一个游标, 然后执行多次语句的方法来减少分析的次数.

原文地址:https://www.cnblogs.com/moveofgod/p/4237997.html