多表数据提取的问题 本帖最后由 justdoitman 于 2011-10-21 16:17:39 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不中index的话,循环执行会做更多的full table scan,情况更糟 先谢谢您的答复,我在表T_PAYMENT_DISTRIBUTION_B3YEARS的BILL_SEQ字段上建了索引.远程数据库上源表有根据LATN_ID 进程了分区。另外06年4月份后就慢下来了,应该是源表数据量猛增的关系,稍微统计了下一个月表有3000W行左右的数据(一个域的,总共三个域),符合条件的记录只有几十万行.我这里每个月份都要从三个远程数据库域来提取数据,每个域的数据量差不了多少. 修改下,是有一个域的数据量特别大,三个域的每个月月表数据量和大概是三千万行左右。比如,2700W,200w,100W这么分布。 查看一下select语句的执行计划吧 下边是一个月一个域的执行计划,在pl/sql里看的,比较简单SELECT STATEMENT, GOAL = ALL_ROWS 2995 11984 1653792 FILTER REMOTE T_BILL_BALANCE_DETAIL_200606 2995 173913 23999994 INDEX RANGE SCAN BILLING_GBILL IND_T_PAYDIS_B3YEARS 1 1 17 应该是下边这个:SELECT STATEMENT, GOAL = ALL_ROWS 175231 1078928 170851064 SORT UNIQUE 175231 1078928 170851064 UNION-ALL FILTER REMOTE T_BILL_BALANCE_DETAIL_200606 125711 14529109 2324657440 INDEX RANGE SCAN BILLING_GBILL IND_T_PAYDIS_B3YEARS 1 1 17 FILTER REMOTE T_BILL_BALANCE_DETAIL_200606 8927 955166 130857742 INDEX RANGE SCAN BILLING_GBILL IND_T_PAYDIS_B3YEARS 1 1 17 FILTER REMOTE T_BILL_BALANCE_DETAIL_200606 2995 173913 23999994 INDEX RANGE SCAN BILLING_GBILL IND_T_PAYDIS_B3YEARS 1 1 17 批量更新数据方法 请教一个相同逻辑sql输出不同结果的情况 求一高难度sql文 求救:oracle10g 导入dmp文件问题 如何将Oracle9i的数据库移植到Postgre中 巨多表,主外键关系搞晕了... 想学习数据库设计,有没有大牛原意给点意见?谢谢! 不用监听怎么备份数据库 jsp 访问 oracle 数据库问题 ORA-00020的新问题 咨询一个数据查询语句 orcale 10g 的问题,急急急急
SELECT STATEMENT, GOAL = ALL_ROWS 2995 11984 1653792
FILTER
REMOTE T_BILL_BALANCE_DETAIL_200606 2995 173913 23999994
INDEX RANGE SCAN BILLING_GBILL IND_T_PAYDIS_B3YEARS 1 1 17
SORT UNIQUE 175231 1078928 170851064
UNION-ALL
FILTER
REMOTE T_BILL_BALANCE_DETAIL_200606 125711 14529109 2324657440
INDEX RANGE SCAN BILLING_GBILL IND_T_PAYDIS_B3YEARS 1 1 17
FILTER
REMOTE T_BILL_BALANCE_DETAIL_200606 8927 955166 130857742
INDEX RANGE SCAN BILLING_GBILL IND_T_PAYDIS_B3YEARS 1 1 17
FILTER
REMOTE T_BILL_BALANCE_DETAIL_200606 2995 173913 23999994
INDEX RANGE SCAN BILLING_GBILL IND_T_PAYDIS_B3YEARS 1 1 17