|
Archives of the TeradataForumMessage Posted: Tue, 28 Mar 2006 @ 11:28:26 GMT
<-- Anonymously Posted: Tuesday, March 28, 2006 06:06 --> Alls, we have a problem on using views in TD V2R5.1. We have a table FACT (1 billion rows) (with a NUSI on Col_A, Col_B) on wich there is a view VF: REPLACE VIEW VF_U AS SELECT * FROM FACT; The following query (Q1) against view VF (where TA and TB are dimension tables): SELECT VF.Col_C, VF.Col_F, VF.Col_A, TA.Col_C FROM VF INNER JOIN TA ON TA.Col_A = VF.Col_A INNER JOIN TB ON TB.Col_A = VF.Col_B WHERE TA.Col_B = runs in one second --> Secondary Index on FACT is used via nested join. If we defined another view VF_U (FACT and FACT_2 have identical structure, same indexes but different data, data are mutually exclusive) like the following: REPLACE VIEW VF_U AS SELECT * FROM FACT UNION ALL /* data are different */ SELECT * FROM FACT_2; The same query Q1 but with the new View (same filters): SELECT VF_U.Col_C, VF_U.Col_F, VF_U.Col_A, TA.Col_C FROM VF_U INNER JOIN TA ON TA.Col_A = VF_U.Col_A INNER JOIN TB ON TB.Col_A = VF_U.Col_B WHERE TA.Col_B = doesn't use anymore NUSI on (Col_A, Col_B) defined on the two tables FACT and FACT_2. Instead optimizer runs 2 Full Table scan on the all rows of the 2 tables FACT and FACT_2 (2 billion of rows) and then use the filters on a Very Huge Spool. Response time is very high. Some hints to avoid this behaviour and to force the use of NUSI with a UNION ALL view? Thank you
| ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||
Copyright 2016 - All Rights Reserved | ||||||||||||||||||||||||||||||||||||||||||||||||
Last Modified: 15 Jun 2023 | ||||||||||||||||||||||||||||||||||||||||||||||||