+ -
当前位置:首页 → 问答吧 → 求SQL查询大数据优化

求SQL查询大数据优化

时间:2011-11-15

来源:互联网

两个表的数据分别为6千万,字段都是100多个,我想从中提取些有用的字段组成新的表,我写的语句如下:
SQL code



CREATE TABLE TG_CDR09_FIX_FL_ERR_SJZ
AS 
SELECT A.CFEE + A.LFEE + A.OTHERFEE RATE_1,
       B.STD_CHARGE,
       A.DISCOUNT_CFEE + A.DISCOUNT_LFEE + A.DISCOUNT_OTHERFEE RATE_2,
       B.CHARGE1,B.CHARGE2,
       B.CHARGE1+B.CHARGE2  old_CHARGE,
       A.FREE_CODE,A.RESERVER3,
       SUBSTR(A.FREE_CODE,
              INSTR(A.FREE_CODE, '|', 1, 6) + 1,
              INSTR(A.FREE_CODE, '|', 1, 7) - INSTR(A.FREE_CODE, '|', 1, 6) - 1) DISCNT_CODE,
       A.IMSI_NUMBER,A.OTHER_PARTY,A.CALL_DURATION,
       B.RATE_PLAN_ID,B.PRODUCT_OBJ_ID,
       A.CHANNEL_NO,A.START_DATE,A.USER_ID,
       B.SERV_ID,
       A.CFEE,A.LFEE,A.OTHERFEE,A.DISCOUNT_CFEE,A.DISCOUNT_LFEE,A.DISCOUNT_OTHERFEE,A.SEQ_NO
  FROM 
       F_BILLING_SJZ.UR_FIX_LOCAL_T@TO_COM_ACT1_PARAM B,
       TG_CDR09_FIX_FL_SJZ                            A
 WHERE A.SEQ_NO = B.TICKET_ID
   AND A.RESERVER3 = B.EVENT_TYPE
   AND (A.CFEE + A.LFEE + A.OTHERFEE <> B.STD_CHARGE AND
       A.DISCOUNT_CFEE + A.DISCOUNT_LFEE + A.DISCOUNT_OTHERFEE = B.CHARGE1+B.CHARGE2 OR
       (A.CFEE + A.LFEE + A.OTHERFEE = B.CHARGE1+B.CHARGE2 AND
       A.DISCOUNT_CFEE + A.DISCOUNT_LFEE + A.DISCOUNT_OTHERFEE <>
       B.CHARGE1) OR (A.CFEE + A.LFEE + A.OTHERFEE <> B.CHARGE1+B.CHARGE2 AND
       A.DISCOUNT_CFEE + A.DISCOUNT_LFEE +
       A.DISCOUNT_OTHERFEE <> B.CHARGE1+B.CHARGE2))
 ORDER BY B.RATE_PLAN_ID, A.USER_ID, DISCNT_CODE, A.RESERVER3;




小弟不才,求人指导。

作者: hyj956948933   发布时间: 2011-11-15

以上语句执行了1多小时后我把它咔嚓了,受不了。

作者: hyj956948933   发布时间: 2011-11-15

创建表,要制定列的,

另外,你可以用视图啊

作者: ruanwei1987   发布时间: 2011-11-15

两个表的数据分别为6千万,字段都是100多个

把两个表中可能要用到的数据先选择出来插入临时表,然后再对临时表进行操作,

作者: dawugui   发布时间: 2011-11-15

引用 3 楼 dawugui 的回复:

两个表的数据分别为6千万,字段都是100多个

把两个表中可能要用到的数据先选择出来插入临时表,然后再对临时表进行操作,


这样DBA会骂我的,占空间太大了,这还只是一个地市的,不包括其它地市的。

作者: hyj956948933   发布时间: 2011-11-15

建议创建视图,拿出对你有用的列和数据。

作者: LuiseRADL   发布时间: 2011-11-15

引用 5 楼 luiseradl 的回复:

建议创建视图,拿出对你有用的列和数据。

创建视图创建的时候是快,但查询起来相当慢,创建这个表的目录提高查询速度。

作者: hyj956948933   发布时间: 2011-11-15

贴一下执行计划!

作者: cosio   发布时间: 2011-11-15

引用 7 楼 cosio 的回复:

贴一下执行计划!

这个得等等

作者: hyj956948933   发布时间: 2011-11-15

引用 8 楼 hyj956948933 的回复:

引用 7 楼 cosio 的回复:

贴一下执行计划!

这个得等等


SELECT STATEMENT, GOAL = ALL_ROWS 3236709 1257705 757138410
 SORT ORDER BY 3236709 1257705 757138410
  HASH JOIN 3076767 1257705 757138410
  REMOTE UR_FIX_LOCAL_T 492926 60262318 6508330344
  TABLE ACCESS FULL UCR_HSD TG_CDR09_FIX_FL_SJZ 874872 57105469 28210101686

作者: hyj956948933   发布时间: 2011-11-15