teradata数据仓库编程实用教程(Terad课件.ppt

上传人(卖家):三亚风情 文档编号:3007276 上传时间:2022-06-21 格式:PPT 页数:81 大小:839.50KB
下载 相关 举报
teradata数据仓库编程实用教程(Terad课件.ppt_第1页
第1页 / 共81页
teradata数据仓库编程实用教程(Terad课件.ppt_第2页
第2页 / 共81页
teradata数据仓库编程实用教程(Terad课件.ppt_第3页
第3页 / 共81页
teradata数据仓库编程实用教程(Terad课件.ppt_第4页
第4页 / 共81页
teradata数据仓库编程实用教程(Terad课件.ppt_第5页
第5页 / 共81页
点击查看更多>>
资源描述

1、实用教程(Teradata)陆世潮2008年9月2 5/30/2022问题总结常见问题分类:常见问题分类:1. 表属性不对: Set / Multiset问题:INSERT操作慢2. 主索引(PI)设置不合理问题1:数据倾斜度大,空间爆满。问题2:JOIN操作,数据需要重分布。 3. 分区索引(PPI)设置不合理问题:全表扫描4. 连接条件过于复杂问题:系统无法优化执行计划5. 缺乏统计信息问题:系统无法找到最优化的执行计划SQL跑得慢哈!跑得慢哈!3 5/30/2022提纲 Teradata架构 常见问题,及解决方法 Teradata工具实用小技巧 JOIN的实现机制 JOIN的优化4 5/

2、30/2022Teradata 体系架构Teradata and MPP SystemsRDBMS ARCH5 5/30/2022Logical Example of NPPI versus PPI4 AMPs with Orders Table defined with PPI on O_Date.RHO_#O_DateRHO_#O_DateRHO_#O_DateRHO_#O_Date35100706/0126100206/0124100406/0120100506/0139101106/0136101206/0132100306/0143101006/0114100106/01061009

3、06/0104100806/0108100606/0103101606/0217101306/0248102306/0207101706/0216102106/0245101506/0209101806/0227101406/0244102206/0202102406/0211101906/0222102006/0201102806/0312103106/0328103206/0310103406/0329103306/0334102906/0319102506/0340103506/0347102706/0325103606/0331102606/0346103006/0323104006/

4、0430103806/0442104706/0413103706/0421104506/0436104306/0405104806/0415104206/0433103906/0418104106/0438104606/0441104406/04 4 AMPs with Orders Table defined with NPPI.01102806/0312103106/0328103206/0310103406/0329103306/0334102906/0319102506/0340103506/0347102706/0325103606/0331102606/0346103006/030

5、3101606/0217101306/0248102306/0207101706/0216102106/0245101506/0209101806/0227101406/0244102206/0202102406/0211101906/0222102006/0214100106/0135100706/0139101106/0106100906/0126100206/0136101206/0104100806/0124100406/0132100306/0108100606/0120100506/0143101006/0123104006/0430103806/0442104706/041310

6、3706/0421104506/0436104306/0405104806/0415104206/0433103906/0418104106/0438104606/0441104406/04RHO_#O_DateRHO_#O_DateRHO_#O_DateRHO_#O_Date 6 5/30/2022提纲 Teradata架构 常见问题,及解决方法 Teradata工具实用小技巧 JOIN的实现机制 JOIN的优化7 5/30/2022表属性:Set & MultiSet Set Table不允许记录重复 MultiSet Table允许记录重复 默认值:Set Table Create Ta

7、ble. AS . 生成的目标表属性默认为Set Table 对SET Table进行INSERT操作,需要检查是否存在重复记录 相当的耗资源 若真要限定唯一性,可以通过UPI或USI实现CREATE SET TABLE pmart.RPT_NM_GRP_PRE_WARN_MON,(CAL_Month INTEGER TITLE 统计月份 ,ORG_NUM CHAR(12) TITLE 集团编号 ,City_ID CHAR(3) TITLE 地市标识 ,ORG_SUBS_GRP_NUM CHAR(10) TITLE 集团用户群编号 ,ORG_Title VARCHAR(200) TITLE 集

8、团名称 ,ORG_Level CHAR(2) TITLE 集团级别 ,STAT_Item_Code CHAR(2) TITLE 统计项 ,STAT_Value DECIMAL(18,2) TITLE 统计值 ) PRIMARY INDEX (ORG_NUM);例子:pmart.RPT_NM_GRP_PRE_WARN_MON 内蒙移动集团客户预警指标月报表假设原有1286449条记录插入:152853条记录耗时:15秒8 5/30/2022表属性:Set & MultiSet (cont.)CREATE MULTISET TABLE pmart.RPT_NM_GRP_PRE_WARN_MON(C

9、AL_Month INTEGER TITLE 统计月份 ,ORG_NUM CHAR(12) TITLE 集团编号 ,City_ID CHAR(3) TITLE 地市标识 ,ORG_SUBS_GRP_NUM CHAR(10) TITLE 集团用户群编号 ,ORG_Title VARCHAR(200) TITLE 集团名称 ,ORG_Level CHAR(2) TITLE 集团级别 ,STAT_Item_Code CHAR(2) TITLE 统计项 ,STAT_Value DECIMAL(18,2) TITLE 统计值 ) PRIMARY INDEX (ORG_NUM);例子:pmart.RPT_

10、NM_GRP_PRE_WARN_MON 内蒙移动集团客户预警指标月报表 建议:建议:Teradata中都用中都用 MultiSet假设原有1286449条记录插入:152853条记录耗时:1秒例子: CREATE MULTISET TABLE tttemp.VT_SUBS_VIOC_QUAN as ( SELECT * FROM tttemp.MID_SUBS_VIOC_QUAN WHERE CAL_MONTH = 200802 AND * )WITH DATA PRIMARY INDEX ( subs_id);临时表临时表, 默认为默认为: Set需要指定为需要指定为: Multiset字段

11、越多,记录越多字段越多,记录越多差别越明显差别越明显9 5/30/2022PI(Primary Index 主索引)的选择 PI影响数据的存储与访问影响数据的存储与访问,其选择标准: 不同值尽量多的字段(More Unique Values) 使用频繁的字段:包括值访问和连接访问 少更新 PI字段不宜太多 最好是手动指定PI 例子:用户语音业务量中间表用户语音业务量中间表CREATE MULTISET TABLE tttemp.MID_SUBS_VIOC_QUAN ( CAL_Month INTEGER TITLE 统计月份, City_ID CHAR(4) TITLE 地市标识, Chann

12、el_ID CHAR(8) TITLE 渠道标识, Subs_id CHAR(12) TITLE 用户标识, 。) PRIMARY INDEX ( subs_id);例子:用户语音业务量临时表用户语音业务量临时表CREATE MULTISET TABLE tttemp.VT_SUBS_VIOC_QUAN as ( SELECT * FROM tttemp.MID_SUBS_VIOC_QUAN WHERE CAL_MONTH = 200802 AND * )WITH DATA PRIMARY INDEX ( subs_id);Subs_ID: 频繁使用频繁使用 Unique Value多多如果不

13、指定如果不指定PI,系统默认为系统默认为:Cal_Month10 5/30/2022PI(Primary Index 主索引)的选择(cont.)例子:梦网客户活跃客户分析梦网客户活跃客户分析CREATE MULTISET TABLE PMART.FCT_DATA_MONNET_ACTIVE_MON ( CAL_Month INTEGER TITLE 统计月份, City_ID CHAR(4) TITLE 地市标识, Channel_ID CHAR(8) TITLE 渠道标识, Mont_SVC_Type_Cod CHAR(3) TITLE 梦网业务类型编码, Mont_SVC_CAT_Mic

14、roCls_Cod CHAR(3) TITLE 梦网业务分类小类编码, Mont_SVC_CHRG_Type_Cod CHAR(2) TITLE 梦网业务计费类型编码, THR_Brand_Cod CHAR(1) TITLE 三大品牌编码, Mont_Consume_Level_Cod CHAR(2) TITLE 梦网消费层次编码, Consume_Level_Cod CHAR(2) TITLE 消费层次编码, 。)PRIMARY INDEX ( CAL_Month ,City_ID ,Channel_ID ,Mont_SVC_Type_Cod ,Mont_SVC_CAT_MicroCls_C

15、od ,Mont_SVC_CHRG_Type_Cod,THR_Brand_Cod ,Mont_Consume_Level_Cod ,Consume_Level_Cod );PI:9字段 2字段: City_ID ,Channel_ID 调整PI后,在右边的SQL中,PI是否起作用?以下以下SQL,PI是否起作用?:是否起作用?:1.值访问Select *From FCT_DATA_MONNET_ACTIVE_MONWhere City_ID = 070010 and Channel_ID= 0100 and cal_month = 2007072.连接访问Select *From FCT_DA

16、TA_MONNET_ACTIVE_MON ALEFT JOIN MID_CHANNEL_INFO_DAILY B ON A. Channel_ID = B. Channel_ID and A. City_ID = b. City_ID LEFT JOIN VW_CDE_REGION_TYPE C ON A. City_ID = C. City_ID 3、值访问连接访问Select *From FCT_DATA_MONNET_ACTIVE_MON A, VT_INFO BWHERE A. Channel_ID = B. Channel_ID AND A. City_ID = B. City_ID

17、 AND A.CAL_MONTH = 200707 AND A. Consume_Level_Cod=B. Consume_Level_Cod11 5/30/2022PPI的使用 PPI(Partition Primary Index,分区索引),把具有相同分区值的数据聚簇存放在一起;类似于SQL Server的聚簇索引(Cluster Index),Oracle的聚簇表(Cluster Table)。 利用PPI,可以快速插入/访问同一个Partition(分区)的数据。CREATE MULTISET TABLE qdata.TB_DQC_KPI_CHECK_RESULT ( TX_DATE

18、 DATE FORMAT YYYYMMDD TITLE 数据日期 NOT NULL, KPI_CODE INTEGER TITLE 指标代码 NOT NULL, 。 )PRIMARY INDEX ( KPI_CODE )PARTITION BY RANGE_N(TX_DATE BETWEEN CAST(20030101) AS DATE FORMAT YYYYMMDD) AND CAST(20191231) AS DATE FORMAT YYYYMMDD) EACH INTERVAL 1 DAY , NO RANGE OR UNKNOWN);Select *From TB_DQC_KPI_CH

19、ECK_RESULTWhere tx_date = 20070701;或Where tx_date between 20070701 and 20070731;或Where tx_date 20070701;但Where tx_date like 200707%;不起作用12 5/30/2022PPI的使用(cont.) Partition上不要使用表达式,否则Partition不能被正确使用。 T1. tx_date/100=CAST(20070917AS DATE FORMAT YYYYMMDD)/100 Substring(T1. tx_date from 1 for 6) =20070

20、9 应该修改为 T1. tx_date=CAST(20070901 AS DATE FORMAT YYYYMMDD)13 5/30/2022PPI的使用(cont.) 脚本:tb_030040270.pl/* 删除当月 */ 2小时 del BASS1.tb_03004 where proc_dt = 200709;insert into BASS1.tb_03004 7小时。 sel . from pview.vw_evt_cust_so cust where acpt_date=cast(200710|01 as date) cast(200710|01 as date)写法错误,PPI不

21、起作用 日期的正确写法日期的正确写法:Cast(20071001 as date format YYYYMMDD)在proc_dt建立PPIPPI字段从Load_Date调整为acpt_date14 5/30/2022创建可变临时表 它仅存活于同一个Session之内 注意指定可变临时表为multiset(通常也要指定PI) 可变临时表不能带有PPI 例子1:create volatile multiset table vt_RETAIN_ANLY_MON as ( select col1,col2, from where group by . )with data PRIMARY INDEX

22、 (PI_Cols) ON COMMIT PRESERVE ROWS; 例子2: create volatile multiset table vt_RETAIN_ANLY_MON ( col1 char(2), col2 varchar(12) NOT NULL)PRIMARY INDEX (PI_Cols) ON COMMIT PRESERVE ROWS;15 5/30/2022创建可变临时表(cont.) 例子3:create volatile multiset table vt_RETAIN_ANLY_MON as ( select col1, cast(adc as varchar(

23、12) col2 from where )with no data PRIMARY INDEX (col1) ON COMMIT PRESERVE ROWS; 例子4:create volatile multiset table vt_net_gsm_nl as pdata.tb_net_gsm_nl with no data ON COMMIT PRESERVE ROWS;字段col2将用unicode字符集;当跟普通字段(latin字符集)join时,需要进行数据重新分布。不建议不建议失败:因为pdata.tb_net_gsm_nl 有PPI而可变临时表不允许有PPI16 5/30/202

24、2固化临时表 固化临时表,就是把查询结果存放到一张物理表。固化临时表,就是把查询结果存放到一张物理表。 共下次分析或他人使用共下次分析或他人使用 Session断开之后,仍然可以使用。断开之后,仍然可以使用。 示例1: CREATE MULTISET TABLE tttemp.TMP_BOSS_VOIC as ( select * from pview.vw_net_gsm_nl) WITH no DATA PRIMARY INDEX (subs_id);INSERT INTO tttemp.TMP_BOSS_VOICSELECT * FROM pview.vw_net_gsm_nl WHER

25、E *; 示例2:CREATE MULTISET TABLE tttemp.TMP_BOSS_VOIC as ( select * from pview.vw_net_gsm_nl WHERE *) WITH DATA PRIMARY INDEX (subs_id); 示例3:(复制表,数据备份)CREATE MULTISET TABLE tttemp.TMP_BOSS_VOIC AS pdata.tb_net_gsm_nl WITH DATA ;17 5/30/2022数据类型注意非日期字段与日期字段char & date的转换与关联: 如果数据类型一致可以直接使用; 在CASE WHEN

26、or COALESCE一定要使用显式的类型转换(CAST)CASE WHEN A = B THEN DATE1 ELSE 20061031 END应写成CASE WHEN A = B THEN DATE1 ELSE CAST(20061031 AS DATE) END数值运算时,确保运算过程中不丢失计算精度。CAST(100/3 AS DEC(5,2)应该写成CAST(100/3.00 AS DEC(5,2)18 5/30/2022字符(串)与数字相比较比较规则比较规则:1) 比较两个值比较两个值(字段字段),它们的类型必须一样!,它们的类型必须一样!2) 当字符当字符(串串)与数字相比较时,

27、先把字符与数字相比较时,先把字符(串串)转换成数字,再进行比较。转换成数字,再进行比较。3) 经分系统中容易出错的,有经分系统中容易出错的,有Cal_Month字段字段Case 1Table 1CREATE TABLE Emp1 (Emp_noCHAR(6), Emp_nameCHAR(20)PRIMARY INDEX (Emp_no);Statement 1SELECT *FROMEmp1WHEREEmp_no = 1234;Statement 2SELECT *FROMEmp1WHEREEmp_no = 1234;Table 1CREATE TABLE Emp2 (Emp_noINTEGE

28、R, Emp_nameCHAR(20)PRIMARY INDEX (Emp_no);Statement 1SELECT *FROMEmp2WHEREEmp_no = 1234;Statement 2SELECT *FROMEmp2WHEREEmp_no = 1234;Case 2Results in Full Table ScanResults in unnecessary conversion 19 5/30/2022目标列的选择 减少目标列,可以少消耗SPOOL空间,从而提高SQL的效率 当系统任务繁忙,系统内存少的时候,效果尤为明显。 举例: GSM语言话单表,PDATA.TB_NET_

29、GSM_NL 共有73字段,以下SQL供返回1.6亿条记录 左边的SQL,记录最长为:698字节,平均399字节 右边的SQL,记录最长为:59字节, 平均30字节 两者相差两者相差400多多GB的的SPOOL空间,空间,IO次数也随着相差甚大!次数也随着相差甚大!SPOOL空间估计:497 GBSPOOL空间估计:42 GBSELECT SUBS_ID ,MSISDN ,Begin_Date ,Begin_Time ,Call_DUR ,CHRG_DURFROM PDATA.TB_NET_GSM_NLWHERE PROC_DATE BETWEEN 20070701 AND 20070731

30、SELECT * FROM PDATA.TB_NET_GSM_NLWHERE PROC_DATE BETWEEN 20070701 AND 2007073120 5/30/2022Where条件的限定 根据Where条件先进行过滤数据集,再进行连接(JOIN)等操作 这样,可以减少参与连接操作的数据集大小,从而提高效率 好的查询引擎,可以自动优化;但有些复杂SQL,查询引擎优化得并不好。 注意:系统的系统的SQL优化,只是避免最差的,选择相对优的,未必能够优化,只是避免最差的,选择相对优的,未必能够得到最好的优化结果。得到最好的优化结果。SELECT A.TX_DATE, A.KPI_CODE

31、 ,B.SRC_NAME,A.KPI_VALUEFROM ( select * from qdata.tb_dqc_kpi_check_result where TX_DATE = 20070701 AND KPI_CODE = 65 ) ALEFT JOIN ( SELECT * FROM qdata.tb_dqc_kpi_def where KPI_CODE = 65 and N_TYPE = M) BON A.KPI_CODE = B.KPI_CODE SELECT A.TX_DATE, A.KPI_CODE ,coalesce(B.SRC_NAME, no name) ,A.KPI_V

32、ALUEFROM qdata.tb_dqc_kpi_check_result ALEFT JOIN qdata.tb_dqc_kpi_def BON A.KPI_CODE = B.KPI_CODE WHERE A. TX_DATE = 20070701 AND A.KPI_CODE = 65 AND B.N_TYPE = M rewrite21 5/30/2022用Case When替代UNION sel city_id,channel_id,cust_brand_id,sum(stat_values) as stat_valuesfrom ( . select t.city_id -语音杂志

33、计费量 ,coalesce(v.channel_id,b.channel_id,-) as channel_id ,cust_brand_id ,sum(case when SMS_SVC_Type_Level_SECND = 017 and Call_Type_Code in (00,10,01,11) then sms_quan else 0 END) as stat_values from PVIEW.vw_mid_sms_svc_quan_daily t left join VT_SUBS v on t.subs_id=v.subs_id left join PVIEW.vw_FCT_

34、CDE_BUSN_CITY_TYPE b on t.city_id=b.City_ID where cal_date=20070914 group by 1,2,3 union all select t.city_id -梦网短信计费量 ,coalesce(v.channel_id,b.channel_id,-) as channel_id ,cust_brand_id ,sum(sms_quan) as stat_values from PVIEW.vw_mid_sms_svc_quan_daily t left join VT_SUBS v on t.subs_id=v.subs_id l

35、eft join PVIEW.vw_FCT_CDE_BUSN_CITY_TYPE b on t.city_id=b.City_ID where cal_date=20070914 and SMS_SVC_Type_Level_SECND like 02% and SMS_SVC_Type_Level_SECND not in (021,022) group by 1,2,3 .)tmpGroup by 1,2,3 两个子查询的表连接部分完全一样 两个子查询除了取数据条件,其它都一样。 Union all是多余的,它需要重复扫描数据,进行重复的JOIN 可以用Case when替代union 作

36、业:KPI_NWR_SMS_BILL_QUAN描述:点对点短信计费量脚本: kpi_nwr_sms_bill_quan0600.pl22 5/30/2022用Case When替代UNION (cont.)sel city_id,channel_id,cust_brand_id,sum(stat_values) as stat_valuesfrom ( select t.city_id ,coalesce(v.channel_id,b.channel_id,-) as channel_id ,cust_brand_id ,sum(CASE WHEN SMS_SVC_Type_Level_SEC

37、ND = 017 and Call_Type_Code in (00,10,01,11) THEN sms_quan -语音杂志计费量语音杂志计费量 WHEN SMS_SVC_Type_Level_SECND like 02% and SMS_SVC_Type_Level_SECND not in (021,022) THEN sms_quan -梦网短信计费量梦网短信计费量 ELSE 0 END ) as stat_values from PVIEW.vw_mid_sms_svc_quan_daily t left join VT_SUBS v on t.subs_id=v.subs_id

38、left join PVIEW.vw_FCT_CDE_BUSN_CITY_TYPE b on t.city_id=b.City_ID where cal_date=20070914.)tmpGroup by 1,2,3SQL优化重写优化重写23 5/30/2022用OR替代UNION Select city_id , channel_id, cust_brand_id, sum(sms_quan ) stat_valuesfrom( select t.city_id -语音杂志计费量 ,coalesce(v.channel_id,b.channel_id,-) as channel_id ,c

39、ust_brand_id ,sum(sms_quan ) stat_values from PVIEW.vw_mid_sms_svc_quan_daily t left join VT_SUBS v on t.subs_id=v.subs_id left join PVIEW.vw_FCT_CDE_BUSN_CITY_TYPE b on t.city_id=b.City_ID where cal_date=20070914 and SMS_SVC_Type_Level_SECND = 017 and Call_Type_Code in (00,10,01,11) group by 1,2,3

40、union all select t.city_id -梦网短信计费量 ,coalesce(v.channel_id,b.channel_id,-) as channel_id ,cust_brand_id ,sum(sms_quan) as stat_values from PVIEW.vw_mid_sms_svc_quan_daily t left join VT_SUBS v on t.subs_id=v.subs_id left join PVIEW.vw_FCT_CDE_BUSN_CITY_TYPE b on t.city_id=b.City_ID where cal_date=20

41、070914 and SMS_SVC_Type_Level_SECND like 02% and SMS_SVC_Type_Level_SECND not in (021,022) group by 1,2,3 )T Group by 1,2,3 两个子查询的表连接部分完全一样 两个子查询除了取数据条件,其它都一样。 Union all是多余的,它需要重复扫描数据,进行重复的JOIN 可以用OR替代union 此类的问题,在脚本中经常见到。24 5/30/2022用OR替代UNION (cont.)select t.city_id ,coalesce(v.channel_id,b.channe

42、l_id,-) as channel_id ,cust_brand_id ,sum( sms_quan) as stat_values from PVIEW.vw_mid_sms_svc_quan_daily t left join VT_SUBS v on t.subs_id=v.subs_id left join PVIEW.vw_FCT_CDE_BUSN_CITY_TYPE b on t.city_id=b.City_ID where cal_date=20070914 and ( SMS_SVC_Type_Level_SECND = 017 -语音杂志计费量语音杂志计费量 and Ca

43、ll_Type_Code in (00,10,01,11) ) OR (SMS_SVC_Type_Level_SECND like 02% -梦网短信计费量梦网短信计费量 and SMS_SVC_Type_Level_SECND not in (021,022) ) )Group by 1,2,3SQL优化重写优化重写25 5/30/2022去掉多余的Distinct与Group by sel t.operator ,t.acpt_channel_id ,t.acpt_city_id ,t.subs_id ,t.acpt_date as evt_date From ( sel operator

44、, ACPT_Channel_ID, acpt_city_id,subs_id, acpt_date from pview.vw_evt_cust_so cust where acpt_date =20071007 and so_meth_code in(0,1,2) and PROC_STS_Code =-1 group by 1,2,3,4,5union all sel operator_num as operator, ACPT_Channel_ID, acpt_city_id, subs.subs_id, charge_date as acpt_date from pview.vw_f

45、in_busi_rec bus join crmmart.subs_day_info_daily subs on subs.msisdn=bus.msisdn where charge_date =20071007 group by 1,2,3,4,5 )t group by 1,2,3,4,5; 既然t查询外层有group by操作去重,那么子查询内的Group by去重是多余的。 而且,两个子查询group by后再用union all,就可能再产生重复记录,那么group by也失去意义了。 解决方法: 把把t查询内部的两个查询内部的两个group by去掉即可去掉即可 类似的类似的Di

46、stinct问题,可效仿解决。问题,可效仿解决。去重去重去重26 5/30/2022Group by vs. Distinct Distinct是去除重复的操作 Group by是聚集操作 某些情况下,两者可以起到相同的作用。 两者的执行计划不一样,效率也不一样 建议:使用建议:使用Group byselect subs_id ,acct_idfrom PVIEW. VW_FIN_ACCT_SUBS_HISwhere efct_date 20070701 group by 1,2select DISTINCT subs_id ,acct_idfrom PVIEW. VW_FIN_ACCT_SU

47、BS_HISwhere efct_date 20070701 27 5/30/2022Union vs. Union all Union与Union all的作用是将多个SQL的结果进行合并。 Union将自动剔除集合操作中的重复记录;需要耗更多资源。 Union all则保留重复记录,一般建议使用Union all。 第一个SELECT语句,决定输出的字段名称,标题,格式等 要求所有的SELECT语句: 1) 必须要有同样多的表达式数目; 2) 相关表达式的域必须兼容select *from (select a) T1(col1)unionselect *from (select bc)T2

48、(col2)select *from (select bc)T3(col3)union allselect *from (select a) T1(col1)union allselect *from (select bc)T2(col2)col3-abcbccol1-ab28 5/30/2022先Group by再join脚本:脚本:rpt_mart_new_comm_mon0400.pl 11小时小时Select case when b.CUST_Brand_ID is null then 5020 when b.CUST_Brand_ID in(2000,5010) then 5020

49、else b.CUST_Brand_ID end ,sum(COALESCE(b.Bas_CHRG_DUR_Unit,0) as Thsy_Accum_New_SUBS_CHRG_DUR , sum(case when b.call_type_code =20 then b.Bas_CHRG_DUR_Unit else 0 END) from VTNEW_SUBS_THISYEAR t inner join VTDUR_MON b on t.Subs_ID=b.Subs_ID left join PVIEW.vw_MID_CDE_LONG_CALL_TYPE_LVL c on b.Long_T

50、ype_Level_SECND= c.Long_Type_Level_SECND left join PVIEW.vw_MID_CDE_ROAM_TYPE_LVL d on b.Roam_Type_Level_SECND= d.Roam_Type_Level_SECND group by 1;记录数情况:记录数情况:t: 580万,万,b: 9400万万, c:8, d:8 主要问题:主要问题:假如连接顺序为: ( (b join c) join d) join t)则是( (9400万 join 8) join 8) join 580万)数据分布时间长数据分布时间长(IO多多),连接次数多,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(teradata数据仓库编程实用教程(Terad课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|