![]() |
|
Archives of the TeradataForumMessage Posted: Mon, 26 Nov 2012 @ 13:46:09 GMT
Hi everyone, Imagine having the table FINA_BORRAR with a primary index on the column fec_inicio_vigencia:
CREATE MULTISET TABLE FINA_BORRAR ,NO FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT
(
id_tienda INTEGER NOT NULL,
val_acum INTEGER COMPRESS (1 ,2 ,3 ,4 ,5 ,6 ,-4 ,-3 ,-2 ,-1 ),
fec_inicio_vigencia DATE FORMAT 'YYYYMMDD' NOT NULL,
fec_fin_vigencia DATE FORMAT 'YYYYMMDD' NOT NULL) PRIMARY INDEX ( fec_inicio_vigencia );
COLLECT STATISTICS ON FINA_BORRAR COLUMN (fec_inicio_vigencia);
If I try to access the table through the column with the index as shown, the explain tells me that "unique primary index" is used:
SELECT * FROM FINA_BORRAR
WHERE fec_inicio_vigencia = DATE;
Explain SELECT * FROM DIM_VSE_DESA.FINA_BORRAR WHERE fec_inicio_vigencia = DATE;
1) First, we do a single-AMP RETRIEVE step from
DIM_VSE_DESA.FINA_BORRAR by way of the primary index
"DIM_VSE_DESA.FINA_BORRAR.fec_inicio_vigencia = DATE '2012-11-27'"
with no residual conditions. The estimated time for this step is
0.00 seconds.
-> The row is sent directly back to the user as the result of
statement 1. The total estimated time is 0.00 seconds.
But, If I try to access the table as shown (with the between and also happens with the ">" and "<") , no primary index is used.
SELECT * FROM DIM_VSE_DESA.FINA_BORRAR
WHERE fec_inicio_vigencia BETWEEN DATE AND DATE+1;
1) First, we lock a distinct DIM_VSE_DESA."pseudo table" for read on
a RowHash to prevent global deadlock for DIM_VSE_DESA.FINA_BORRAR.
2) Next, we lock DIM_VSE_DESA.FINA_BORRAR for read.
3) We do an all-AMPs RETRIEVE step from DIM_VSE_DESA.FINA_BORRAR by
way of an all-rows scan with a condition of (
"(DIM_VSE_DESA.FINA_BORRAR.fec_inicio_vigencia <= DATE
'2012-11-27') AND (DIM_VSE_DESA.FINA_BORRAR.fec_inicio_vigencia >=
DATE '2012-11-26')") into Spool 1 (group_amps), which is built
locally on the AMPs. The size of Spool 1 is estimated with no
confidence to be 1 row (37 bytes). The estimated time for this
step is 0.01 seconds.
4) Finally, we send out an END TRANSACTION step to all AMPs involved
in processing the request.
-> The contents of Spool 1 are sent back to the user as the result of
statement 1. The total estimated time is 0.01 seconds.
Can someone tell me if there is a way for accessing the table in these cases using the index? Thanks. FINA RODRIGUEZ POSADA
| ||||||||||||||||||||||||||||||||||||||||||||||||
| | ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||
| Copyright 2016 - All Rights Reserved | ||||||||||||||||||||||||||||||||||||||||||||||||
| Last Modified: 15 Jun 2023 | ||||||||||||||||||||||||||||||||||||||||||||||||