|
Archives of the TeradataForumMessage Posted: Thu, 04 Jun 2015 @ 22:21:32 GMT
HI Forum, I have partitioned a table on Timestamp column and when I use the same column in a 1-1 view in Query by providing Date range, am getting the benefit of partitions and quite fast. But, the requirement here is, We have a coalesce logic on partition column to deduce another column from PI columns with partition by clause inside the view. When I use this view, the optimizer is going into FULL TABLE SCAN even though I provide the date range in the query. My table is quite huge and the coalesce logic to deduce the column is business requirement. I cannot change that. Can you please tell me how can I get the benefit of partitioning in this case? Or the Best possible options to handle this coalesce logic Thanks very much! FYI: Table partitioned on UPDATE_TIME: CREATE MULTISET TABLE DBA_DATA.TAB_500 ,NO FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT, DEFAULT MERGEBLOCKRATIO ( JOB_ID INTEGER ... ... Instance_id VARCHAR(13) CHARACTER SET LATIN NOT CASESPECIFIC, Update_time TIMESTAMP(6) COMPRESS , Maintagref VARCHAR(128) CHARACTER SET LATIN NOT CASESPECIFIC, Parenttagref VARCHAR(13) CHARACTER SET LATIN NOT CASESPECIFIC, VALID_FROM_Date_TS TIMESTAMP(6) NOT NULL, VALID_TO_Date_TS TIMESTAMP(6) NOT NULL) PRIMARY INDEX ( Instance_id ,Maintagref ,Parenttagref ) PARTITION BY RANGE_N(Update_time BETWEEN TIMESTAMP '2000-01-01 00:00:00.000000+01:00' AND TIMESTAMP '2030-12-31 23:59:59.999999+01:00' EACH INTERVAL '1' MONTH , NO RANGE, UNKNOWN); View: With Coalesce Logic: REPLACE VIEW DBA_DATA.TAB_500_COALESCE_LOGIC_V AS LOCKING ROW for access SELECT JOB_ID , .. .. INSTANCE_ID, ,Maintagref ,Parenttagref ,UPDATE_TIME AS VALID_FROM_Date_TS ,COALESCE( MAX(UPDATE_TIME) OVER ( PARTITION BY Maintagref,Instance_id,Parenttagref ORDER BY Update_time ASC ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING ) ,MAX(VALID_TO_Date_TS ) OVER ( PARTITION BY INSTANCE_ID,MAINTAGREF,PARENTTAGREF ORDER BY MSG_ID, VALID_TO_Date_TS)) AS VALID_TO_Date_TS FROM DBA_DATA.TAB_500 ; View: Direct 1-1 View: REPLACE VIEW DBA_DATA.TAB_500_Direct_View_V AS LOCKING ROW for access SELECT JOB_ID , .. .. INSTANCE_ID, ,Maintagref ,Parenttagref ,UPDATE_TIME AS VALID_FROM_Date_TS ,VALID_TO_Date_TS FROM DBA_DATA.TAB_500 ; Sample Query: SELECT FK_TASK_STATUS, PARENTTAGREF, VALID_TO_Date_TS, VALID_FROM_Date_TS FROM DBA_DATA.TAB_500_COALESCE_LOGIC_V -- from DBA_DATA.TAB_500_DIRECT_VIEW_V /* Here, Its Taking the partition into consideration and running in 10seconds, Coz its a1-1 view*/ WHERE FK_TASK_STATUS = '4' ... ... AND VALID_FROM_Date_TS between DATE '2015-04-01' AND DATE '2015-05-31' AND VALID_TO_Date_TS = CAST('2999-12-31 23:59:59.999999' AS TIMESTAMP(6)); Thanks, Sravan. Sravan Kumar Bodla
| ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||
Copyright 2016 - All Rights Reserved | ||||||||||||||||||||||||||||||||||||||||||||||||
Last Modified: 15 Jun 2023 | ||||||||||||||||||||||||||||||||||||||||||||||||