Tengo un query hasta cierto punto sencillo el cual es
Código SQL:
Ver original
SELECT a.col1,a.col2,a.col4,a.col5, b.col1,b.col2,b.col4,b.col5 FROM tabla1 a ,tabla2 b WHERE a.col1*=b.col1 AND a.col2>= filtro_tipo_fecha AND a.col2<= filtro_tipo_fecha AND b.col2 IN ('a','b','c','d')
los índices que tiene la tabla1 son
index uno a.col2,a.col3
los índices de la tabla2 son
index uno b.col2
index dos b.col1
El problema es que la tabla1 tiene poco menos de 20 millones de registros
El plan de ejecución me dice que hace un index escan con el índice uno de la tabla1 y ocupa menos de 20% de ejecución
y el otro índice que toma es el index dos de la tabla2 y tarda poco mas de 70%, esta parte se me hace un poco raro ya que y ocupo el índice uno en la búsqueda.
Mis dudas son, como puedo optimizar esta consulta, ya que tarda bastante.
o si me pueden ayudar a entender que tabla busca a que tabla y como poner bien los índices o por que ocupa el índice dos de la tabla2, quiero pensar que es por la forma en que esta haciendo el join pero creo que seria de la tabla1 el problema por no tener índice en esa columna
uso SYBASE 16
y no puedo crear una FK (no es por que no quiera ocuparlo.
Espero me puedan ayudar