多表数据提取的问题 本帖最后由 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 帮我看看这个语句 关于执行计划统计信息 一个疑惑,为什么每个表都要用id这个列? 游标用法询问。急急急 帮忙解决一个SQL问题?????? Oracle连接问题 这中情况的查询语句该怎么写啊 如何将原有ORACLE8的数据库直接加到ORACLE9里? 请大侠帮助小弟如何在pl/sql程序中调用? 从sql server导出到oracle的表删不掉也无法查看怎么办 咨询一个数据查询语句 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