Ver Mensaje Individual
  #8 (permalink)  
Antiguo 09/04/2009, 06:35
Avatar de Muzztein
Muzztein
 
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
Respuesta: [ODBC SQL Server Driver]Terminó el tiempo de espera.

los indices siempre agilizan mas las consultas.

eso si debes tener presente que cuando se usan funciones para transformar un dato, los indices se dejan de usar.
ME explico.

si por ej tienes un campo fecha a la que le aplicas una transformacion para compararla con un dato que andas buscando, el indice de este campo no funciona.

ejemplo:

select * from tabla where transformacion(campo_fecha) = fecha_entregada

en este caso si es que tienes un indice en el campo_fecha, este no será usado ya que la funcion no se lo permitira. Aqui la funcion se aplicara a cada valor guardado en la tabla.

´para forzar el indice lo que debes hacer es lo siguiente

select * from tabla where campo_fecha = transformacion(fecha_entregada)

asi la funcion se aplica al valor entregado y el motor podra usar los indices de la tabla.



ademas te recomiendo que pruebes las consultas en el query analizer con un CONTROL K (consulta/mostrar plan de ejecuccion)

si es que en el diagrama te dice que estas haciendo un TABLE SCAN o un INDEX SCAN, entonces tu consulta no es optima. tus consultas siempre deberian ser del tipo INDEX SEEK para que esten optimizadas.


saludos!