如何查看Oracle中sql语句的执行时间

通过Oracle执行计划可以看到SQL的执行时间。

EXPLAIN PLAN FOR

SELECT * FROM table;

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

SQL>set timing on --显示执行时间

SQL>set autorace on ?C显示执行计划

SQL>set autorace on ?C显示执行计划

SQL>set autotrace traceonly ?C只显示执行计划即不显示查询出来的数据

设置完毕后执行SQL语句就会显示执行时间。

oracle sql 语句执行顺序

where 里面条件 and 是先执行 and 前面 还是后面条件

这个其实和你写的顺序不大,这个先后顺序,是数据库来根据表/索引的信息来决定的。

例如一个 学生表, 有学号,姓名,性别

其中 学号是主键, 姓名上面有个索引。

找 名字叫 强妹 的女生:

SELECT * FROM 学生 WHERE 姓名='强妹' AND 性别 = '女'

SELECT * FROM 学生 WHERE 性别 = '女' AND 姓名='强妹'

数据库在处理 SQL 以前,都会去分析, 发现 查询的条件中, 姓名上面有索引,而性别上面没有。 那么优先根据 姓名的条件, 去检索,然后再去把通过索引得到的数据,去筛选 性别=女的

比如表里面共有10000行。姓名叫 '强妹' 的只有一个。

那么通过索引,一步就定位到那一行。

然后再判断这一行数据的 性别字段, 是不是 = '女'

假如 姓名/性别 都没有索引呢?

那就是执行 全表扫描。

不分先后。

什么意思呢?

就是假如 表里面10000行数据。

那就是从第一行开始, 查看 姓名与性别 条件。 满足的返回。 不满足的丢弃。 直到100行都处理完。

并不是一口气把所有的数据,都放到内存里面,然后 姓名判断一次, 去掉部分, 性别判断一次,再去掉部分。

怎么在Oracle中写执行sql的sql语句

可以使用 execute immediate

--FYI

--execute immediate不支持多行返回,如果需要可新建临时表

declare

v_source_sql varchar2(1000);

v_union_sql varchar2(1000);

begin

select column_name into v_source_sql from table_name ;--get source sql

v_union_sql='select * from tablename2,('||v_source_sql ||') h where 。。';--sql str

-- 之前先创建好所需字段的temp_table

execute immediate('insert into temp_table '||v_union_sql );

--在临时表中就是你所需要的数据。

exception 。

--如果只是需要返回单行数据,则可将execute immediate嵌入在sql中使用

--execute immediate str into parameter1 ,parmeter2。--返回参数

where column=:parameter。.条件参数

--

-我说的很仔细吧:) 今天心情好

end;

Oracle中怎样一次执行多条sql语句

有时我们需要一次性执行多条sql语句,而用来更新的sql是根据实际情况用代码拼出来的

解决方案是把sql拼成下面这种形式:

begin

update TB_VG set seq = 1, vessel_id = 'Jin14', vessel_type = 'TRACK' where batch_number = '20837' and train_id = '0233086';

update TB_VG set seq = 2, vessel_id = 'Jin14', vessel_type = 'TRACK' where batch_number = '20992' and train_id = '0233110';

end;

总结如下:

以begin开始,以end;结尾(end后的分号不能省),中间的每个sql语句要以分号;结尾

在实际编码中,发现即使这样也会有错误发生,把sql语句中的换行符替换成空格就可以了

比较稳妥的编码方式是:

1、以正常的方式编写sql,根据阅读与编写的需要,中间肯定会有换行符

2、在执行之前进行替换:strSql = strSql.Replace("r\n", " ").Replace('\n', ' ');

如果不采用这种方式,可能的异常有:

ORA-00933: SQL 命令未正确结束(如果sql没有以分号结尾)

ORA-00911: 无效字符(如果未加begin 和 end)

ORA-06550: 第x行, 第xxx列: PLS-00103: 出现符号 "end-of-file"在需要下列之一时:。。(如果end后面没有;分号)

ORA-06550: 第x行, 第xxx列: PLS-00103: 出现符号 ""在需要下列之一时:。。(语句之间有换行符)

Oracle中优化SQL语句执行的原则是什么

1。

已经检验的语句和已在共享池中的语句之间要完全一样 2。变量名称尽量一致 3。

合理使用外联接 4。少用多层嵌套 5。

多用并发 语句的优化步骤一般有: 1。调整sga区,使得sga区的是用最优。

2。sql语句本身的优化,工具有explain,sql trace等 3。

数据库结构调整 4。项目结构调整 写语句的经验: 1。

对于大表的查询使用索引 2、少用in,exist等 3、使用集合运算 1.对于大表查询中的列应尽量避免进行诸如 To_char,to_date,to_number 等转换 2.有索引的尽量用索引,有用到索引的条件写在前面 如有可能和有必要就建立一些索引 3.尽量避免进行全表扫描,限制条件尽可能多,以便更快 搜索到要查询的数据 如何让你的SQL运行得更快 交通银行长春分行电脑部 任亮 ---- 人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在大型的或是复杂的数据库环境中(如联机事务处理OLTP或决策支持系统DSS)中表现得尤为明显。笔者在工作实践中发现,不良的SQL往往来自于不恰当的索引设计、不充份的连接条件和不可优化的where子句。

在对它们进行适当的优化后,其运行速度有了明显地提高!。

oracle语句执行,oraclesql语句执行相关推荐

  1. oracle中执行动态sql语句吗,oracle中有没有可动态执行sql语句的函数

    oracle中有没有可动态执行sql语句的函数 关注:233  答案:2  手机版 解决时间 2021-03-05 15:53 提问者祗剩寂寞 2021-03-04 22:38 oracle中有没有可 ...

  2. Oracle执行SQL语句的过程

    [转自:http://blog.csdn.net/wzy0623/archive/2009/09/27/4599615.aspx] 当我们提交一条sql语句时,oracle会做哪些操作呢?  Orac ...

  3. Java 技术篇 - java同时连接多种数据库执行sql语句的兼容性验证,数据库类型包括:oracle、sqlserver、DB2、人大金仓、达梦、PG、瀚高、polardb

    Java 操作多类型数据库下的兼容性验证 第一章:数据库测试 ①[ oracle 数据库不支持分号]ORA-00933: SQL 命令未正确结束 ② [sqlserver 数据库不支持 commit] ...

  4. Python 技术篇-连接oracle数据库并执行sql语句实例演示,python连接oracle数据库oci详细配置方法

    Python 连接 Oracle 数据库 第一章:连接 oracle 数据与环境配置 ① 连接 oracle 数据库效果演示 ② oci 下载 ③ oci 配置 ④ 环境变量配置 ⑤ 检测是否有 or ...

  5. Oracle调用接口(OCI)源码剖析(2):执行SQL语句并获取结果

    概述 接着上一篇文章<Oracle调用接口(OCI)源码剖析(1):创建数据库连接>,我们继续对OCI中执行SQL语句并获取结果的源码进行剖析.该操作主要是由两个函数完成的:CDbExec ...

  6. 【oracle】查看数据库最近执行了哪些sql语句

    前言 oracle 12.1.0.2.0 为了确定功能是否生效,需要查看数据库最近执行的sql语句,在里面找到想要的SQL语句 查看数据库最近执行了哪些sql语句 # 查看1小时内执行的sql语句,并 ...

  7. oracle数据提交不上去,oracle数据库命令窗口执行了语句但是没有提交会有什么影响吗...

    Oracle数据库里面有DCL语句(Data Control Language),一共有四个关键字,commit.rollback.grant和revoke.它们执行的时候,你都不会有什么感觉.com ...

  8. oracle 数据库中执行数据库语句能找到数据,但是程序中却抓取不到

    oracle 数据库中执行数据库语句能找到数据,但是程序中却抓取不到? 原因:数据库中插入数据时没有commit,执行COMMIT后就可以查询到. 转载于:https://www.cnblogs.co ...

  9. vbs 连oracle 负载均衡,(原)QTP中用VBS调用PLSQL并执行相关语句

    今天工作的需求是要在录制一段web程序之前要调用plsql并执行一段数据库代码清空相关数据才能做web录制测试, 本来是想用QTP直接录制plsql的,但是后来发现自己对qtp录制window app ...

最新文章

  1. HMM -GMM 理清不错
  2. IP地址莫名其妙变为0.0.0.0
  3. thinkphp mysql 预处理_thinkPHP框架中执行原生SQL语句的方法
  4. RabbitMQ(四)交换机exchange
  5. 第四范式荣获2020年度信创工委会 “卓越贡献成员单位”称号
  6. 两台服务器实现会话共享
  7. 如何给PDF文件交换页面?操作方法你知道吗?
  8. linux用户没有创建文件的权限设置密码,Linux学习第五章用户身份与文件权限
  9. ubuntu怎么切换到root用户,切换到root账号方法
  10. 苹果卖这么贵都怪她?苹果零售部门主管将离职 曾是奢侈品巨头掌门人
  11. Errors running builder 'DeploymentBuilder'
  12. Matlab拾取图片坐标保姆级教程
  13. redis 学习笔记(六) sorted_set数据类型
  14. 北京50年代到90年代的春节老照片,终于找全了!
  15. python画行向日葵_如何用Python画一朵太阳花
  16. python求极限中有算术平方根如何表达_Python求算数平方根和约数的方法汇总
  17. 前端图片上传那些事儿
  18. layui定时刷新页面
  19. 下载丨66页PDF,云和恩墨技术通讯(2022年7月刊)
  20. 如何扩展Linux系统分区大小

热门文章

  1. jdk8环境变量的配置
  2. 【矩阵论笔记】诱导范数
  3. SQL Server 基础系列篇
  4. socket编程UDP程序
  5. 【testlink】TestLink1.9.18常见问题解决方法
  6. 杨建允:2022年抖音快手电商直播带货选品的技巧和逻辑
  7. DBA 数据库管理员(中兴微品)
  8. 天猫观星台_观星时使用此有用的Bash脚本
  9. 兔子问题---细说斐波那契数列
  10. 狼羊菜问题的算法思想和C++实现(二进制状态表示 递归状态转移 回溯 剪枝)