Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/05/2004, 04:22
Avatar de jachguate
jachguate
 
Fecha de Ingreso: enero-2003
Ubicación: Guatemala
Mensajes: 66
Antigüedad: 22 años
Puntos: 0
Cita:
Acces cuanto menos indices tengas mas rápido va...
Esto es una verdad a medias. Cualquier motor de base de datos hará mas rápido las inserciones cuanto menos indices tenga. Es lógico, ya que cada vez que se inserta un registro a una tabla, hay que insertar su llave correspondiente en cada indice asociado a esta.

A la hora de los selects, no importa en realidad que una tabla tenga 1 o 30 indices. Lo que importa es que el motor pueda generar un plan de ejecución basado en indices. Es decir, si la condición del where es algo como

where edad > 20

Si hay un indice por la edad, la consulta irá que vuela, independientemente de si es el único indice que hay en la tabla o hay 20 mas... estos no importan.

Por el contrario, si no hay un indice sobre este campo... entonces el motor se verá obligado a hacer lo que en oracle se llama un "full table scan" para discriminar uno a uno los registros que cumplen la condición.

Entre mas complejas sean las clausulas where, asi como los joins, mas dificil será para el motor determinar el plan de ejecución óptimo. Lo recomendable es tener indices para todas las llaves foraneas, de manera que los joins sean eficientes. Luego, tener indices por los campos que se involucren directamente en los where. Los resultados variaran de un motor a otro, y Access, ciertamente, no se destaca por su capacidad de elaborar planes de ejecución óptimos..

Hasta luego.

;)
__________________
Juan Antonio Castillo Hernández

Visitá el blog de jachguate