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!