sql 优化,该如何解决
发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
sql 优化
有下面两个sql:
//查询出anz_client_account 表中cif_no, account_no重复的记录
select * from conv_data_ul_file_line fl
WHERE EXISTS (SELECT 1
FROM anz_client_account anz
WHERE EXISTS (SELECT 1
FROM anz_client_account aca
WHERE anz.cif_no = aca.cif_no
AND anz.account_no = aca.account_no
GROUP BY aca.cif_no, aca.account_no
HAVING COUNT(*) > 1)
AND fl.data_ul_file_line_oid = anz.data_ul_file_line_oid);
//查询出 anz_client_account表中cif_no从第五位到最后 不存在于client_info_ts表中cust_nbr字段
select * from conv_data_ul_file_line fl
WHERE EXISTS (SELECT 1
FROM anz_client_account anz
WHERE NOT EXISTS (SELECT 1 FROM client_info_ts ts WHERE ts.cust_nbr = substr(anz.cif_no, 5))
AND fl.data_ul_file_line_oid = anz.data_ul_file_line_oid);
这两个sql可进行优化?conv_data_ul_file_line,anz_client_account,client_info_ts中的数据非常多,以conv_data_ul_file_line中数据最多
------解决方案--------------------
优化是有先决条件的,是为了提高查询效率。还是减少磁盘的I/O操作。
具体要看一下执行计划了。
------解决方案--------------------
1. SELECT *
FROM conv_data_ul_file_line t1
WHERE EXISTS (SELECT 1
FROM (SELECT t.data_ul_file_line_oid, SUM(1) over(PARTITION BY cif_no, account_no) AS sumcount FROM anz_client_account t) t2
WHERE t1.data_ul_file_line_oid = t2.data_ul_file_line_oid
AND t2.sumcount > 1);
2. 这个从语句上没什么好优化的,看记录,如果anz_client_account,client_info_ts中使用到的那几个字段重复的很多,可以先distinct一把再关联
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
创建同义词报ORA-00955
各位大神,我创建公有同义词,怎么会报ORA-00955错?很多人遇到建立私有同义词有这个错,我怎么建立公有同义词也...
-
impdp导入为什么索引会占的非常大。
本帖最后由 xixi_168 于 2014-07-19 23:10:47 编辑
在做数据...
-
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
测试没有成功。
ORA-12514: TNS: 监听程序当前无法识别连接描述...
-
oracle神牛进!!!
1、如何用sql查出oracle自带的所有函数?
2、给定ascii码,如何用sql查出对应的字符?
3、为什么在java中和在oracl...
-
oracle的cmd执行一个.sql文件,遇到异常时退出而不是继续执行
假设有一个1.sql文件,内容是
Declare
X varchar2(20);
Begin
Sc...
-
oracle查看某一条记录中为空的字段总数
oralce中,某一条记录中怎么得到这条记录中字段值为空的总数呢?(不为空的总数也可)
比如:id a1...
-
三台ORACLE通信,DBLINK
三台ORACLE服务器,A、B、C,其中A和B在同一个内网,B为双网卡可以连接外网,C为外网ORACLE。现在在B上已经建立DBL...
-
OracleOraDb10g_home1TNSListener无法启动
OracleOraDb10g_home1TNSListener无法启动,每次启动都提示:“在本地计算机无法启动Ora...
-
虚拟机安装RAC,网卡可以用NAT方式连接吗?
大家好:
我看教程上设的,安装配置RAC,配置虚拟机的两块网卡,第一块网卡(eth0,配置公用I...
-
求解oracle监听服务名问题
最近在做服务器的双机热备时,发现两边的监听服务名不一致,一个是OracleOraDb11g_home1TNSListen...