通过此查询
SELECT * FROM
(SELECT
T.*,
'T'||to_char(min(T.ORDEN_CAMPO) OVER (PARTITION BY T.NOMBRE_ESQUEMA, T.NOMBRE_TABLA, T.CONDICION_ADICIONAL ORDER by T.ORDEN_CAMPO)) ALIAS1
FROM SOLICITUDES.TBL_QRY_DINAMICO_SOLDEU T
WHERE
TIPO_QRY = 'SOLICITUD_DEU' AND
SUBTIPO_QRY = Numero_Seccion_in
)
ORDER BY ORDEN_CAMPO
执行解释计划时,我得到一个TABLE FULL SCAN。特别是在完成分区的部分。还有其他方法可以做同样的逻辑吗?
在外部select语句中,如果我直接调用我想要获取的值,我不会得到TFS但是当我调用ALIAS1时,会出现TFS。
答案 0 :(得分:0)
索引列ORDEN_CAMPO
TIPO_QRY = 'SOLICITUD_DEU' AND SUBTIPO_QRY = Numero_Seccion_in
过滤的行的份额是多少?如果小于10%,则索引两列。
您可以尝试索引列NOMBRE_ESQUEMA,NOMBRE_TABLA和CONDICION_ADICIONAL
注意:正如@ xionutz2k已经提到的,全表扫描在某些情况下可能比索引扫描更有效。如果您提到了所有索引并且解释计划始终显示全表扫描,那么就可以了。