首页
学习
活动
专区
圈层
工具
发布

Oracle SQL调优之绑定变量用法简介

本文链接:https://blog.csdn.net/u014427391/article/details/101017248 一、SQL执行过程简介 继上一篇博客Oracle的cursor学习笔记...:Oracle的游标Cursor原理简介,再介绍oracle的绑定变量 介绍绑定变量之前,先介绍SQL执行过程和硬解析的概念: 执行sql的过程,会将sql的文本进行hash运算,得到对象的hash值,...,解析树等对象,如果找不到库缓存对象句柄,就需要重新解析,这个过程解析过多,容易造成硬解析问题 硬解析:是指Oracle在执行目标SQL时,在库缓存中找不到可以重用的解析树和执行计划,而不得不从头开始解析目标...; end; / 所以绑定变量在pl/sql里的核心语法为: execute immediate [sql语句] using [变量] 2.3、PL/SQL批量绑定变量 例子来自《基于Oracle的...(); 批量绑定变量写法: 此例子来自《基于Oracle的SQL优化》一书: String vc_sql = 'update t_emp set sal = ?

1.7K20

Oracle SQL调优系列之绑定变量用法简介

最近在看《基于Oracle的SQL优化一书》,并做了笔记,作者的个人博客:http://www.dbsnake.net/ 文章目录 一、SQL执行过程简介 二、绑定变量典型用法 2.1、在SQL中绑定变量...2.2、在PL/SQL中使用绑定变量 2.3、PL/SQL批量绑定变量 2.4、Java代码里使用绑定变量 一、SQL执行过程简介 继上一篇博客Oracle的cursor学习笔记:Oracle的游标Cursor...原理简介,再介绍oracle的绑定变量 介绍绑定变量之前,先介绍SQL执行过程和硬解析的概念: 执行sql的过程,会将sql的文本进行hash运算,得到对象的hash值,然后拿hash值,去Hash Buckets...[sql语句] using [变量] 2.3、PL/SQL批量绑定变量 例子来自《基于Oracle的SQL优化》一书,要实现的的是批量绑定变量,fetch关键字,将empno大于7900的职员信息打印出来...(); 批量绑定变量写法: 此例子来自《基于Oracle的SQL优化》一书: String vc_sql = 'update t_emp set sal = ?

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Oracle 绑定变量窥探

    它的作用就是在SQL语句硬分析的时候,查看一下当前SQL谓词的值 ,以便生成最佳的执行计划。而在oracle 9i之前的版本中,Oracle 只根据统计信息来做出执行计划。...影响的版本:Oracle 9i, Oracle 10g     对于绑定变量列中的特殊值或非均匀分布列上的绑定变量会造成非高效的执行计划被选择并执行。        ...即ORACLE首次解析     SQL时会将变量的真实值代入产生执行计划,后续对所有使用该绑定变量SQL语句都采用首次生存的执行计划。如此这般?那性能究竟如何?    ...请参考:Oracle自适应共享游标 二、示例绑定变量窥探     1、创建演示环境        SQL> select * from v$version where rownum查看当前数据库版本...在Oracle 11g 中,自适 应特性从一定程度解决了绑定变量窥探所导致的问题。

    2.2K30

    特殊变量 (SQL)

    特殊变量 (SQL)系统提供的变量。...HOROLOG$JOB$NAMESPACE$TLEVEL$USERNAME$ZHOROLOG$ZJOB$ZPI$ZTIMESTAMP$ZTIMEZONE$ZVERSIONSQL直接支持许多对象脚本特殊变量...这些变量包含系统提供的值。只要可以在SQL中指定文字值,就可以使用它们。SQL特殊变量名不区分大小写。大多数可以使用缩写来指定。...SQL 支持字符串函数、字符串条件表达式和字符串运算符。ObjectScript 字符串操作区分大小写。字符串中的字母可以转换为大写、小写或混合大小写。...字符串排序规则可以区分大小写,也可以不区分大小写;默认情况下,SQL 字符串排序规则是不区分大小写的 SQLUPPER。 SQL 提供了许多字母大小写和排序规则函数和运算符。

    2.1K20

    SQL教程:变量

    变量的定义 SQL Server中的变量就是一个参数,可以对这个参数进行赋值。...变量的分类 变量分为局部变量和全局变量,局部变量用@来标识,全局变量用@@来标识(常用的全局变量一般都是已经定义好的) 声明变量 变量在使用前必须先声明才能够使用。...常用的全局变量有 @@ERROR ——最后一个SQL错误的错误号 @@IDENTITY —–最后一次插入的标识值 @@LANGUAGE —–当前使用的语言的名称 @@MAX_CONNECTIONS –...可以创建的同时连接的最大数目 @@ROWCOUNT —-受上一个SQL语句影响的行数 @@SERVERNAME —-本地服务器的名称 @@TRANSCOUNT —–当前连接打开的事物数 @@VERSION...—–SQL Server的版本信息 例如查询数据库的版本号 PRINT @@VERSION 结果: 查询本地服务器的名称 PRINT @@SERVERNAME 结果: 这些信息都存储在全局变量中,

    1.1K10

    Oracle SQL 异常处理

    ZERO_DIVIDE --除数为零 – DUP_VAL_ON_INDEX –唯一索引中插入了重复值 预定义异常的示例: declare v_id emp.empno%type; --声明变量...rollback; dbms_output.put_line('出现其他错误.'); end;  用户自定义异常就是用户定义一个异常情况,遇到这种情况再对这种情况进行处理 因为用户定义的异常不一定是Oracle...而用户自定义异常以及预定义异常不回终止程序,但会终止该 PL/SQL 代码块,所以一个存储过程中可以有多个 PL/SQL 代码块。...关于异常的语法及定义: 什么是异常: PL/SQL用异常和异常处理器来实现错误处理 Oracle中出现错误的情形通常分为编译时错误(compile-time error)和运行时错误(run-time...v_workyear integer; BEGIN select to_char(sysdate,'yyyy')-to_char(hiredate,'yyyy') --两个数字字符串相减的值存到整数型变量中

    1.2K10

    【SQL】小心在循环中声明变量——浅析SQL变量作用域

    本文适用:T-SQL(SQL Server) 先看这个语句: DECLARE @i INT = 0 WHILE @i < 3 --跑3圈 BEGIN --每圈都定义一个表变量,并插入一行...变量作用域】的坑。...理解这一点很重要,因为这与C#等编译语言非常不同,C#中每一圈声明的变量都相当于重新建一个,与上一圈的毫无关系,但在sql中不能这么思考。...其实这个问题本质上是一个变量作用域问题,只不过SQL中的变量作用域,与C#等语言按语句块划分不一样,SQL的变量作用域是【批】,这一点在MSDN中有说。...印象中某种SQL的写法是声明在一个区,逻辑在一个区,既然你t-sql的声明具有“提升”这种特点,我认为做成那种比较好,而不是混在逻辑语句中搞特殊。

    2.9K20

    Oracle优化09-绑定变量

    ---- 系列博文 Oracle-绑定变量binding variable解读 Oracle-Soft Parse/Hard Parse/Soft Soft Parse解读 ---- 概述 绑定变量是OLTP...---- 绑定变量 what ,why 绑定变量就起本质而言就是说把本来需要Oracle做硬分析的SQL变成了软分析,以减少Oracle花费在SQL解析上的时间和资源。...---- 是否采用绑定变量在资源消耗上对比 下面我们来对下同一条SQL被执行10000次,绑定变量和非绑定变量在资源消耗上的情况 采用绑定变量 打开SQL_TRACE Connected to Oracle...这就是绑定变量的由来,它并不神秘,不过是拿一个变量来代替谓词常量,让ORACLE每次对用户发送的SQL做hash运算,运算出相同的hash值,于是Oracle便将这些SQL看做同一个SQL对待而已。...,让Oracle确切知道谓词条件的值,它直接决定了SQL执行计划的选择,这样做的方式就是不要绑定变量 在OLAP系统中,表索引的分析显得至关重要,因为它是Oracle为SQL做出正确的执行计划的信息来源和一句

    1.1K10

    Oracle PLSQL编程之变量

    注: 以下测试案例所用的表均来自与scott方案,使用前,请确保该用户解锁. 1、简介 和大多数编程语言一样,在编写PL/SQL程序时,可以定义常量和变量,在pl/sql程序中包括有: a、标量类型(Scalar...pl/sql语句时,如果需要用到变量,那么就需要在定义部分定义变量。...":" 2.2、标量使用的案例   作用:变量是存放pl/sql块中最普通的变量 输入一个员工号,显示雇员的姓名、工资、个人所得税(税率为0.03),代码如下: declare c_tax_rate number...3、复合变量(composite)   用于存放多个值的变量 3.1、复合类型-pl/sql记录 类似高级语言中的结构体,需要注意的是,当引用pl/sql记录中的成员时,必须要加记录变量作为前缀(记录变量...在编写pl/sql程序时,可以使用游标变量(ref cursor)和对象类型变量 (ref obj_type)两种参照变量类型。

    1.5K70
    领券