No determina el índice correcto
Publicado por Guillermo (3 intervenciones) el 07/06/2012 18:19:34
Buenas, estoy haciendo un query a una tabla de 40.000 filas. Tengo un índice en esa tabla que tiene dos columnas (digamos COL1, COL2)
La cláusula WHERE del query sería así:
WHERE COL1 = X1 AND COL2 = X2
La cantidad de filas que devuelve el query es 300 (es decir el 0,75% del total de las filas)
El problema que tengo es que al ver el plan de ejecución el SQL se observa que no toma el índice que existe por esas columnas, sino que toma el índice de la PK, lo cual tiene un costo mayor.
Yo uso el hint INDEX para forzar que tome ese índice si lo toma y el costo obviamente es muchísimo menor.
Mi pregunta es: ¿por qué si el costo de usar el índice es menor que no hacerlo entonces el optimizador de consultas no lo utiliza?
Tengo las estadísticas actualizadas.
Gracias.
La cláusula WHERE del query sería así:
WHERE COL1 = X1 AND COL2 = X2
La cantidad de filas que devuelve el query es 300 (es decir el 0,75% del total de las filas)
El problema que tengo es que al ver el plan de ejecución el SQL se observa que no toma el índice que existe por esas columnas, sino que toma el índice de la PK, lo cual tiene un costo mayor.
Yo uso el hint INDEX para forzar que tome ese índice si lo toma y el costo obviamente es muchísimo menor.
Mi pregunta es: ¿por qué si el costo de usar el índice es menor que no hacerlo entonces el optimizador de consultas no lo utiliza?
Tengo las estadísticas actualizadas.
Gracias.
Valora esta pregunta


0