![]() |
|
Archives of the TeradataForumMessage Posted: Tue, 28 Feb 2006 @ 08:35:36 GMT
Hi All First I am Sorry for the long mail . I am facing with the performance problem when users are trying to access data . Initially we dint have any filters to the Users view which has been added recently to filter out records based on the value in Column Data_source_cd I have got the target EDW table with the following structure .
CREATE SET TABLE account_event ,NO FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT
(
Event_Id DECIMAL(18,0) NOT NULL,
Account_Num VARCHAR(255) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
Account_Modifier_Num CHAR(18) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
Account_Event_Type_Cd CHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC,
Start_Dt DATE FORMAT 'YYYY-MM-DD',
End_Dt DATE FORMAT 'YYYY-MM-DD',
Data_Source_Cd CHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC,
Record_Deleted_Flag BYTEINT NOT NULL DEFAULT 0 ,
BusinessDate DATE FORMAT 'YYYY-MM-DD',
Ins_Txf_BatchID INTEGER,
Upd_Txf_BatchID INTEGER)
PRIMARY INDEX ( Event_Id );
This table has got 15million records The table is accessed by a view V_Account_Event which is a one to one on table (Account_Event) without any filters.
REPLACE VIEW V_ACCOUNT_EVENT (
Event_Id
, Account_Num
, Account_Modifier_Num
, Account_Event_Type_Cd
, Start_Dt
, End_Dt
, Data_Source_Cd
, Record_Deleted_Flag
, BusinessDate
, Ins_Txf_BatchID
, Upd_Txf_BatchID
) AS
LOCKING TABLE ACCOUNT_EVENT FOR ACCESS SELECT
Event_Id
, Account_Num
, Account_Modifier_Num
, Account_Event_Type_Cd
, Start_Dt
, End_Dt
, Data_Source_Cd
, Record_Deleted_Flag
, BusinessDate
, Ins_Txf_BatchID
, Upd_Txf_BatchID
FROM ACCOUNT_EVENT;
For the downstream datamarts to provide only the relevant data from the target EDW we have got a filter table which will hold only the required values
CREATE SET TABLE data_sources_filter ,NO FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT
(
S_NO INTEGER,
DATA_SOURCE_CD VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC,
DESCRIPTION VARCHAR(255) CHARACTER SET LATIN NOT CASESPECIFIC,
START_DT DATE FORMAT 'YY/MM/DD',
END_DT DATE FORMAT 'YY/MM/DD')
PRIMARY INDEX ( DATA_SOURCE_CD );
This table has got only 23 records The users access the data by the following view defn..
REPLACE VIEW VM_ACCOUNT_EVENT (
Event_Id
,Account_Num
,Account_Modifier_Num
,Account_Event_Type_Cd
) AS
SELECT
TGT.Event_Id
,TGT.Account_Num
,TGT.Account_Modifier_Num
,TGT.Account_Event_Type_Cd
FROM V_ACCOUNT_EVENT TGT
INNER JOIN DATA_SOURCES_FILTER B
ON COALESCE(TRIM(TGT.DATA_SOURCE_CD),'') =
COALESCE(TRIM(B.DATA_SOURCE_CD),'' )
AND TGT.End_Dt is null
;
The problem is when I run a query of Count(*) in the Target table directly it gives me the result in 3 mins. Whereas When I execute the same using the VM_ACCOUNT_EVENT view to query it takes 20 mins to provide me the result. Can you pls help me to find a way to correct this problem.
Sel count(*) from Account_Event ; Result in 3 mins
Explain plan when I query against the table
Sel count(*) from VM_ACCOUNT_EVENT ; Result in 18mins.
Explain plan when I query using the view
I have tried by creating Secondary Index on the table for Data_source_cd. This is also not working . Any suggestions or way to solve this problem is very much appreciated. Thanks in advance Cheers Suresh
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Copyright 2016 - All Rights Reserved | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Last Modified: 15 Jun 2023 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||