You are on page 1of 1

ANITA ANOTA

CUANDO UTILIZAR INDICES?.

0 Cuando los query's recuperan entre el 2% y 4% del total de las filas de una tabla, este valor
puede ser mayor cuando los datos a recuperar se satisfacen del indicen o cuando las columnas
indexadas pueden usarse para joinear otras tablas, si supera el 25% del total de las filas en este ultimo
caso quiza no lo utilice.
Por ejemplo no utlizara indice donde los valores de las columnas indexadas son siempre el
mismo valor (diego tu campo fecha tiene el mismo valor para toda la particion sino me
equivoco).
Las columnas sobre las que se realiza el indice difieren del orden en el cual se realiza el query.
Ejm indice por col1,col2,col3 usara el indice si se accede por columna col1 o col1+col2 o
Col1+col2+col3 pero no col2 o col3.

El numero de filas candidatas se puede obtener dividiendo el numero total de filas de la tabla por
el numero de valores distintos de la o las columnas sobre las que se quiere realizar un indice.

1 No usar btree en indices cuyo valores distintos sobre el campo que se quiere utilizar es bajo ,
ejemplo el sexo (f,m).
2 No indexar columnas donde existe muchos updates, inserts o deletes , en caso de hacerlo una vez
conviene primero destruir el indice y luego crearlo.
3 No indexar columnas en condiciones where donde se utilizaran funciones del tipo avg..
4 Crear indices de columnas combinadas en el caso que las mismas sean accedidas juntas casi
siempre por las condiciones where, y si al combinarlas se logra hacer un indice unico mejor.

SENTENCIAS SQL CON WHERE BIEN UTILIZADAS:

5 Cuando el indice es unico accede por el ROWID, unico valor posible en la condicion where, solo
un registro sera recuperado
6 Tratar de agrupar las sentencias de un where utilizando = y and.
7 En vez de usar NOT IN sustituir por NOT EXISTS ( select .. from where a = b) esto hara que
use el indice de la tabla del subquery, siempre se resuelve el query de adentro primero.
8 No usar condiciones where de este estilo where func(campo) = b , reemplazar por where campo=
func(valor ).

VISTAS

9 No se recomienda hacer vista que realicen join con otras vistas o tablas es preferible construir la
vista como un join de ambas.
10 Tampoco se recomienda si se tiene una vista sobre una tabla y una condicion where por = sobre
un campo que es indice de la tabla hacer la condicion where directamente sobre la tabla en lugar de la
vista.
11

You might also like