同样的Oracle SQL语句在JDBC中执行很快,在PL/SQL执行却很慢

我有一条SQL语句里面有一个,查询列中有一个函数,在应用中取值需5秒,在PL/SQL中需要16秒,
如果去掉查询函数,则只需要2秒,但是应用中依然是5秒,语句如下

select cc_STATUS ccstatus
,c3o7.c3get_desc('ZH','UCOD', e.cc_status,'EVST', '') ccstatus_display
FROM c3ucodes u, c3events e
LEFT OUTER JOIN c3firstact a ON ( a.act_event = e.evt_code )
WHERE e.cc_rstatus IN ('Q', 'R', 'C')
AND e.cc_rtype IN ('JOB', 'PPM')
AND u.uco_rentity = 'JBTP'
AND u.uco_code = e.evt_jobtype
AND u.uco_rcode <> 'IS'
order by evt_created ASC
有没有大神知道是什么原

2个回答

如果查询结果的数据量不是很大,应该是执行计划不够优,分析一下uco_rentity是否可以增加索引,此外对于查询函数也分析一下执行计划。

是不是你取值只看部分的?实际上取所有值的时间还是一样的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
oracle 的SQL语句在SQLPLUS 执行很快,在procedure 中执行却很慢,请大侠指教.
具体的语句为:rnSelect Distinct orderno From mtl_tmd_pick_list rn Where orderno Like c_orderno (此参数为,7302123%)rn And itemcode Like c_itemcode (此参数为,%)rn在PLSQL Developer 的new windows 中执行只需要0.08 秒rn而在过程中写一个游标如下:rn Cursor tmd_list is rn Select Distinct orderno From mtl_tmd_pick_list rn Where orderno Like c_ordernorn And itemcode Like c_itemcode ;rn这两个参数是在调用过程时传入的,在调用之后需400多秒才能执行出来,真不知是何原因。rn表mtl_tmd_pick_list 建的索引如下:rncreate index IX_TMD_PICK_LIST_ID on MTL_TMD_PICK_LIST (MOVE_ORDER_LINE_ID,WIP_SUPPLY_LOCATOR_ID)rn tablespace HWPACKINDrn pctfree 10rn initrans 2rn maxtrans 255rn storagern (rn initial 2Mrn next 22056Krn minextents 1rn maxextents unlimitedrn pctincrease 20rn );rncreate index IX_TMD_PICK_LIST_ITEMCODE on MTL_TMD_PICK_LIST (ITEMCODE)rn tablespace HWPACKINDrn pctfree 10rn initrans 2rn maxtrans 255rn storagern (rn initial 2Mrn next 38128Krn minextents 1rn maxextents unlimitedrn pctincrease 20rn );rncreate index IX_TMD_PICK_LIST_LINE_ID on MTL_TMD_PICK_LIST (LINE_ID)rn tablespace HWPACKINDrn pctfree 10rn initrans 2rn maxtrans 255rn storagern (rn initial 2Mrn next 22056Krn minextents 1rn maxextents unlimitedrn pctincrease 20rn );rncreate index IX_TMD_PICK_LIST_ORDERNO on MTL_TMD_PICK_LIST (ORDERNO)rn tablespace HWPACKINDrn pctfree 10rn initrans 2rn maxtrans 255rn storagern (rn initial 2Mrn next 45760Krn minextents 1rn maxextents unlimitedrn pctincrease 20rn );rn这张表的记录较多,有100多万条记录,在查询总的数据只有几百行,distinct 出来有10多行,应该不会有太大的影响才对.rn小弟百思不得其解,目前需要这要组合使用,请各位大侠多多指教,小弟在此谢过了。
JDBC 执行sql语句
[code=&quot;java&quot;] package com.enhance.jdbc; import java.io.FileInputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.util.Properties; /*...
JDBC执行SQL语句
一.执行SQL语句 使用PreparedStatement,由PreparedStatement创建,PreparedStatement对象用于发送带有一个或多个输入参数的SQL语句,执行语句时,输入参数将被送到数据库中。PreparedStatement的实例扩展了Statement,因此它们包括了Statement方法,但PreparedStatement对象的效率更高。执行Prepared
JDBC之执行SQL语句
引子—–作为一种不使用大型的JDBC框架的Hibernate或者MyBatis的操作数据库的方法,原始的使用JDBC来实现也是一种不错的方式。 (1)学习成本高,没掌握透它就像一个黑盒子,出问题很难处理; (2)毕竟框架内容太多,比较笨重,很多时候我们也不需要这些流行包含的那么多的功能。 鉴于这两个方面,完全有必要自己实现一个类似于框架的结构。 只需要轻引用的结合DBUtil
在PL/SQL中执行SQL语句.(三)
 oracle 数据库中,语句一般分为这几种:   DML(data manipulation language) : 数据库操纵语句,有 select  、insert、update、delete 能对数据进行操作的语言,严格说来select  不算在其中   DDL(Data Definition Language) :数据库定义语言,有 create、drop、alter、t...
oralce sql第一次执行很快,之后执行很慢
今天执行一个sql,第一次执行很快,之后执行非常慢,怀疑是执行计划的问题。 删除执行计划后第一次也很快; https://blog.csdn.net/stevendbaguo/article/details/43796433  select s.SQL_TEXT, s.ADDRESS, s.HASH_VALUE||'','exec sys.dbms_shared_pool.purge('''...
如何执行Oracle pl/sql语句并返回 执行结果?
就像pl/sql developer一样,rn如执行update语句,update后返回 20 rows updatedrn如执行 desc myTable,返回myTable的表结构.....rn如执行非法语句,返回Ora错误信息"ORA-00900: 无效 SQL 语句"rnrnrn求教!
JDBC执行SQL语句出错
我用JDBC执行一条update语句时,能够成功执行,rnrn可是我执行两条或者多条update语句时却出现错误咯 rnrnrn1、sql = "update monitor_id set lastid = 11 ,now_max_id = 11177 where id = 1"; // 正确rnrn2. sql = "update monitor_id set lastid = 11 ,now_max_id = 11177 where id = 1; update monitor_id set lastid = 200 ,now_max_id = 200 where id = 2;"; // 出错 rnrnrn错误信息:rn at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2921)rn at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1570)rn at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)rn at com.mysql.jdbc.Connection.execSQL(Connection.java:2972)rn at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)rn at com.mysql.jdbc.Statement.execute(Statement.java:529)rnrn哪位高手能帮忙解释一下啊 谢谢咯 先。。
JDBC学习笔记(SQL语句的执行)
在获得数据库连接后,紧接着就是执行SQL语句。这里用到俩个类:Statement和PreparedStatement 一、Statment Statement提供了以下方法用来执行SQL语句: * executeQuery(String sql):执行一条SQL查询语句,返回查询结果对象(ResultSet) * executeUpdate...
jdbc执行带参数的SQL语句
[code=Java]rnpublic Pet getByName(String name) rn Connection conn=BaseDao.getConnection();rn String sql="select id,master_id,name,type_id,love,health,adopt_time,status from pet where name like '%?%'";rn rn PreparedStatement preStmt=null;rn ResultSet rs=null;rn try rn preStmt= conn.prepareStatement(sql);rn preStmt.setString(1, name); //执行到这里,报索引列出错,应该是sql语句like后面那部分出错,要怎么改呢rn rs=preStmt.executeQuery();rn//.....省略rnrnrnrnrn[/code]rnrn请教,lik后面的语句要怎么写。
执行statement.executeUpdate(sql); 很慢???
执行statement.executeUpdate(sql);为啥很慢???rn用的是weblogic的连接池Datasource.
为什么在SQL PLUS中能执行,在PL SQL中却报错
本人纯菜鸟,刚学习Oracle不久,现遇到如下问题,请教各位。rn语句如下,我在SQL PLUS中完全没问题,在PL SQL中却提示无效语句,这根PL SQL版本有关系吗?我用的是9.0.6.1665rnvariable v_dept numberrnexec :v_dept :=10rnselect *rnfrom hr.employees ernwhere e.department_id=:v_deptrnrnSQL PLUS中执行结果如下:rn[img=https://img-bbs.csdn.net/upload/201609/13/1473722311_528478.png][/img]rn
SQL语句在查询分析器中的执行速度很快,在程序中的执行速度很慢的问题
我有一个表有2W多条数据,现在我要查询其中冲突的记录,SQL语句在查询分析器中很快(不到1S),在程序在就超时,用了TOP 10有反应(也要2S),求帮助啊[code=csharp]const string sq = "select [id],[cid],[JXSname],[ObjName],[ObjNum],[ttNum],[tjNum],[ObjJGListNum] from [TTobjinfo] where id in (select max(ID) from [TTobjinfo] as tb group by cid)";//去掉重复项目进度临时表rnstr = "select [id],[cid],[JXSname],[ObjName],[ObjNum],[ttNum],[tjNum],[ObjJGListNum] from [TTobjinfo] where id in (select max(ID) from (" + sq + ") as tb2 group by ObjName)";rnst = "select ObjName from (" + sq + ") as ct2 group by ObjName having (count(ObjName)>=2 and ObjName<>'' and ObjName is not null)";rnsql = "select top 10 b2.*,'name' as ac from (" + st + ") as a2 left join (" + str + ") as b2 on a2.ObjName = b2.ObjName";rnvar ctdb = TtDataBase.ReadTable(sql);rn ListView1.DataSource = ctdb;rn ListView1.DataBind();rn ctdiv.Visible = ctdb.Rows.Count > 0;[/code]rnrn这是程序代码我写成存储过程同样的问题,在查询分析器中很快(2S),在程序中就超时。。。rn求帮忙啊!!!
PL/sql 下执行SQL的问题
执行rnselect id,container_id from equip_roomrngroup by container_id rn报错:not a group by expressionrn其中一个container_id 对应多个id。怎么解决,谢谢!
PL/SQL执行sql的原理
SQLplus执行sql语句的原理,plsql是一个与oracle交互的客户端工具,可以通过它输入sql语句。 在plsql中输入SQL语句时,该语句将被存放在sql缓冲区(一个内存区域)。这个缓存区很小,只能存放一条sql语句, 当下一条sql语句输入时,原来缓存区的那条sql将会被覆盖。尽管plsql输入sql语句,但plsql并不执行sql语句,而是将sql语句发送给oracle服务器,
pl sql中执行问题?
为什么show user connrn /as sysdbarn exitrn等执行命令在sql* plus中可以执行rn在plsql 中就执行出错!rn报错 ORA-00900:无效SQL语句是!
PL SQL中动态sql的执行
oracle中execute immediate的使用(select/insert/update/delete) execute immediate的语法如下: execute immediate 'sql'; execute immediate 'sql_select' into var_1, var_2; execute immediate 'sql' using [in|out|i...
PL/SQL中执行存储过程
PL/SQL中执行存储过程      DECLARE oreturn_code VARCHAR2(100); --这个是输出参数,需要声明,并确保类型正确 oerrmsg VARCHAR2(100); oriskscore VARCHAR2(100); oinputdate VARCHAR2(100); BEGIN IF_GET_LATEST_RISK_SCORE('67900208',...
PL/SQL执行存储过程
1、PL/SQL中SQL窗口执行过程: BEGIN DBMS_REDEFINITION.can_redef_table(uname =&gt; 'johnny', tname =&gt; 'BPM_TASK', options_flag =&gt; DBMS_REDEFINITION.cons_use_pk); END; 2、PL/SQL中命令窗口执行过程: EXEC DBMS_REDEFIN...
pl/sql执行存储过程
--1.my_test1rncreate or replace procedure my_test1(id in varchar2)rnas rnname varchar2(10);rnbegin rnselect employee_name into name from employees where employee_id=id;rnDBMS_OUTPUT.PUT_LINE(name);rnend my_test1;rnrn----------------------------------------------------------rnexecute my_test1('1');rnrn程序报错rnORA-01403: 未找到数据rnORA-06512: 在"SYS.MY_TEST1", line 5rnORA-06512: 在line 1rn但是employee_id=1,是有结果的rn-----------------------------------------------------------rnrnrn-----------------------------------------------------------rn--2.testrncreate or replace procedure testrnrnasrn rn v_month varchar2(2):= to_char(sysdate,'mm');rn v_nm number(2):=to_number(v_month);rnrnbeginrn rn dbms_output.put_line(v_nm);rnrnend ;rn----------------------------------------------------rndeclarernbegin rnprocedure test; rnend;rn-----------------------------------------------------rn请问,为何出现如上错误?rn存储过程是否有问题?rnpl/sql里到底该采用那种方式来执行存储过程(默认in输入参数时)
PL/SQL执行存储过程
在PL/SQL中新建命令窗口   已连接到 Oracle9i Enterprise Edition Release 9.2.0.1.0 已连接为 stock SQL&amp;gt; exec proc_syn_userrole();   PL/SQL 过程成功完成
PL/SQL 执行ORACLE存储过程
求在PL/SQL下执行ORACLE带参数的返回结果集的存储过程实例rn求ORACLE实现存储过程数据集输出的思路
pl/sql连接oracel,执行sql语句速度,都很慢!求助!
现象:pl/sql developer客户端连接oracle服务器速度很慢,要等个7,8分钟左右,rn 连接成功后,执行一个sql语句时间也很慢,要4,5分钟.请各位高手帮忙分析原因,怎么解决?致谢!rn其它信息:oracle服务器是linux系统,同局域网用Xshell远程登录过去也要4,5分钟,然后在oracle服务器rn 本地sqlplus登录数据库也很慢,要5,6分钟,登录成功后执行sql语句正常,速度也正常.好了,就这此信息!
JDBC中执行多个SQL语句事例
import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import com.xcliang.util.code.DBUtil; public class deleteStudent { //如果要想在一个持久层方法中书写多个相关的sql语句同时执行的话 /
pl/sql中执行SQL的问题
为什么我在执行SQL语句:select * from equip_building 报错,报错情况如下:ORA-00933:SQL command not properly ended. 其中equip_building是数据库中存在的表。
在SQL Plus中pl/SQL怎样执行?
在SQL Plus中写完sql语句后按F8就能执行,但pl/SQL怎样执行?
oracle sql语句执行的顺序
比如:select * from table a where a.name='gg' and a.age > 20;rnrn这样一条sql oracle执行的时候是否先查询 name='gg' 的数据集 然后再这个数据集再去查找符合age》20的记录?
Oracle执行SQL语句的过程
转载:用于学习   当我们提交一条sql语句时,oracle会做哪些操作呢? Oracle会为每个用户进程分配一个服务器进程:service process(实际情况应该区分专用服务器和共享服务器),当service process接收到用户进程提交的sql语句时,服务器进程会对sql语句进行语法和词法分析。 名词解释: 语法分析:语句本身正确性。 词法分析:对照数据字典中...
oracle执行SQL语句报错
conn.BeginTransrnconn.Execute (sql1),程序执行到这一步报错,抛出“[Oracle][ODBC][Ora]ORA-01013”错误,sql1的内容为rnupdate terminmerch set term_id='00008525', standby = '111111111111|22111' where merch_id = '001033333333333' and term_id ='00009525'rn如果这一句在sql/plus中执行没问题,为什么在程序中就报错呢rn还有,如果没有term_id='00008525',则在程序,还是sql/plus中都能正确执行,这是什么原因
oracle执行SQL语句的过程分析
通过SQL语句的机制判断SQL语句的性能,分析SQL语句在数据库中如何一步步工作的,有利于后续进行数据优化学习 一、 select name from student order by id; 1、SQL解析(SQL语句的解释,oracle进行语法分析、语义分析) 2、执行计划(oracle如何访问数据的) 3、执行SQL ① 从磁盘中读取数据(如果内存中没有) ② 数据处理 ③ 返回结果 二、...
在查询分析器中执行SQL语句突然很慢很慢, 怎么回事?
在查询分析器中执行SQL语句,如create table, 当点击工具栏上的分析查询或执行查询时,都要等上老半天, 而昨天下班之前不是这样的
jdbc 执行查询很慢?
java web项目,一查询语句,查询速度很慢,达到几十秒。数据量也就几百,多的话1000,2000.在PL/SQL中查询,速度很正常,零点几秒。数据库是oracle11g。各位知道是什么原因造成的吗?
同样的语句,acess报错,sql serer执行
[img=http://img.my.csdn.net/uploads/201212/25/1356443622_5042.png][/img]rn[img=http://img.my.csdn.net/uploads/201212/25/1356443636_9711.png][/img]rnrn你们告诉我access应该怎么该好吗?
同样的sql语句,为什么执行结果不一样?
我用的是asp+oracle,调试时发现在本地机上下面的sql语句正常执行,可以查到数据,可是移到现场后却查不到数据,所用oracle版本,数据库中数据,IIs版本,IE版本均相同,不知道问题究竟出在那里?rnsql="select * from a where to_date(TIME,'YYYY-MM-DD HH24:MI:SS')<'"&dat_e&"'" rs.open sql,conn,3,3
Dapper执行Sql语句HitCache导致很慢
现象,Dapper执行Sql超时,在查询分析器里面执行Sql很快 通过分析发现被转换成了  exec  sp_executesql '你的Sql' stackoverflow说法:http://stackoverflow.com/questions/15683197/weird-timeout-issues-with-dapper-net  最终换了写法,不使用缓存。ti
SQl语句执行很慢 解决方法 思路分析
第六季 ThinkPHP5 模型关联入门 及商城功能扩展
以下SQL语句为什么执行很慢
我写了以下SQL语句rnrnselect * from cstest where rnbase_id inrn(select top 10 base_id from cstest where base_id inrn(select top 60000 base_id from cstest order by base_id asc)rnorder by base_id desc)rnorder by base_id ascrnrnbase_id 是cstest表中的关键字索引字段rnrn以上SQL执行中有如下问题:rnrn当TOP 60000的值是TOP 50000以下时执行时间不到一秒,rn而TOP 60000以上则执行时间5分钟都不能结束。rnrnrnrnrn
JDBC批量执行sql
[url]http://chenzhou1025.blog.163.com/blog/static/174341430201123071257711/[/url] [url]http://blog.sina.com.cn/s/blog_4d8a2c970100g5e1.html[/url] [url]http://www.fu-he.com/JAVA/jishu_d.asp?id=4117...
如何在PL/SQL Developer中批量执行SQL语句?
开发需要使用的数据库环境,都用SQL创建,包括:创建表空间、用户、分配权限、创建表、创建包、包体、以及初始化数据等等。rn可是如何在一个SQL Window中执行呢?rnrnMSSQL只需要放在一起,GO分开就可以。PL/SQL中如何做???rn
pl/sql developer中sql语句执行的问题
insert into jc_dwml (dwbh, dwdm, tydm, dwmc, dwsxbh, qhlxbh, dgbz, zzflbh) rnvalues ((select max(dwbh)+1 dwbh from jc_dwml), rn '30439573095', rn '44000001000011', '广东省公安厅办公室', 1, 2, '0', 1)rn单独执行没问题rn但放到begin ... end;中就出现一大堆语法错误rn把values中的(select max(dwbh)+1 dwbh from jc_dwml) 换为具体值如1111就可以rn是不是begin ... end;中insert语句不能含select?还是别的什么原因
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法