sql语句如下
SELECT * FROM (
SELECT ROWNUM R,REPORT_ID,REG_ACCOUNT,TITLE,TEMPLATE_ID,STATE_GROUP,STATE,ADATE_FROM, DATA_8103,DATA_8105,MASTER_ID,NAME ,OPERATION_ID,OPERATION_NAME FROM (
SELECT REPORT.REPORT_ID,REPORT.REG_ACCOUNT,REPORT.TITLE,REPORT.TEMPLATE_ID,REPORT.STATE_GROUP,REPORT.STATE,REPORT.ADATE_FROM,NVL (REPORT.DATA_8103,'') DATA_8103,NVL (REPORT.DATA_8105,'') DATA_8105,REPORT.MASTER_ID,CUSTOMER.NAME,OPERATION.OPERATION_ID,OPERATION.OPERATION_NAME
FROM TBL_ERM_REPORT_DATA_CACHE REPORT,TBL_SAL_CUSTOMER CUSTOMER,TBL_ERM_OPERATION OPERATION,TBL_CACHE_DATA_SET_6303 DATASET
WHERE REPORT.MASTER_ID=CUSTOMER.MASTER_ID AND REPORT.DATA_6303=DATASET.DATA_SET_ID AND DATASET.PARAM=OPERATION.OPERATION_ID AND REPORT.DEL_FLAG=0 AND CUSTOMER.DEL_FLAG=0 AND REPORT.REPORT_KIND =1 AND (OPERATION.OPERATION_ID in (315134,315135) )
AND REPORT.ADATE_FROM>='2007-02-23 15:00:00' AND REPORT.ADATE_FROM<='2012-03-03 14:59:59'
ORDER BY REPORT.ADATE_FROM ASC ) WHERE ROWNUM<=20 ) WHERE R> 0这个语句在客户端软件中执行很快,没有任何全表扫描,但是在java程序中通过jdbc就运行的很慢,不知道是为什么?还有如果在java程序中,AND REPORT.ADATE_FROM>='2007-02-23 15:00:00' AND REPORT.ADATE_FROM<='2012-03-03 14:59:59'任意一个过滤条件注释掉,也是很快的,求大家帮助
SELECT * FROM (
SELECT ROWNUM R,REPORT_ID,REG_ACCOUNT,TITLE,TEMPLATE_ID,STATE_GROUP,STATE,ADATE_FROM, DATA_8103,DATA_8105,MASTER_ID,NAME ,OPERATION_ID,OPERATION_NAME FROM (
SELECT REPORT.REPORT_ID,REPORT.REG_ACCOUNT,REPORT.TITLE,REPORT.TEMPLATE_ID,REPORT.STATE_GROUP,REPORT.STATE,REPORT.ADATE_FROM,NVL (REPORT.DATA_8103,'') DATA_8103,NVL (REPORT.DATA_8105,'') DATA_8105,REPORT.MASTER_ID,CUSTOMER.NAME,OPERATION.OPERATION_ID,OPERATION.OPERATION_NAME
FROM TBL_ERM_REPORT_DATA_CACHE REPORT,TBL_SAL_CUSTOMER CUSTOMER,TBL_ERM_OPERATION OPERATION,TBL_CACHE_DATA_SET_6303 DATASET
WHERE REPORT.MASTER_ID=CUSTOMER.MASTER_ID AND REPORT.DATA_6303=DATASET.DATA_SET_ID AND DATASET.PARAM=OPERATION.OPERATION_ID AND REPORT.DEL_FLAG=0 AND CUSTOMER.DEL_FLAG=0 AND REPORT.REPORT_KIND =1 AND (OPERATION.OPERATION_ID in (315134,315135) )
AND REPORT.ADATE_FROM>='2007-02-23 15:00:00' AND REPORT.ADATE_FROM<='2012-03-03 14:59:59'
ORDER BY REPORT.ADATE_FROM ASC ) WHERE ROWNUM<=20 ) WHERE R> 0这个语句在客户端软件中执行很快,没有任何全表扫描,但是在java程序中通过jdbc就运行的很慢,不知道是为什么?还有如果在java程序中,AND REPORT.ADATE_FROM>='2007-02-23 15:00:00' AND REPORT.ADATE_FROM<='2012-03-03 14:59:59'任意一个过滤条件注释掉,也是很快的,求大家帮助
解决方案 »
- oracle排名查询
- 数据库利用率监控
- 如何在插表的时候生成随机数。
- 请问:V$SESSION是什么呢?
- 求助:Enterprise Manager 无法继续。最可能的原因是无法检索数据库会话信息, 或 EM 无法处理用户调用的书签。 按“确定”即可继续。
- 如何对一个表进行写锁和解锁,用那种命令
- 怎样把库里面的一部分数据(比如说用sql查询得到的)导出成dmp?
- cube如何使用,高手指点
- 存储过程中数组是怎么定义的?类似于什么语言格式?在线等待
- 表 XXX 发生了变化, 触发器/函数不能读它
- SQL:在循环中,抽出的数据以6万件为单位,出力文件title的功能怎样实现
- oracle有几种连接方式?????
已经建立索引了,但是还是有问题。这个语句在客户端软件没有任何执行效率问题,大约100毫秒,但是在java程序中,jdbc执行用大约5.5秒。还有还有如果在java程序中,AND REPORT.ADATE_FROM>='2007-02-23 15:00:00' AND REPORT.ADATE_FROM <='2012-03-03 14:59:59'任意一个过滤条件注释掉,效率很高,为什么会出现这个现象呢