Ver Mensaje Individual
  #6 (permalink)  
Antiguo 11/01/2010, 14:19
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 9 meses
Puntos: 150
Respuesta: Duda con creacion de indices

Cita:
Iniciado por FNX_NET Ver Mensaje
claro entiendo su punto, pero yo pensaba que el indice ayudaba a la busqueda, pero por ejemplo tengo un campo que guarde los nombre de los paises, pero obvio en ese campo se van a repetir nombre de paises, yo lo quiero indexar para que la busqueda sea mas rapida, pero segun eso la busqueda va hacer mas lenta porque los nombre se repiten
Pero dices que tienes 2 millones de datos....

Imaginemos que tu web hace MUCHAS consultas con un WHERE PAIS='Spain'

Si no tienes indice (secundario ya que se repiten) para ese campo, el motor de la base de datos va a tener que ir mirando uno por uno los 2 millones de datos....., es decir, 2 millones de "comprobaciones" por asi llamarlo.

Sin embargo, si tienes un indice hecho, cuando alguien haga ese WHERE PAIS='Spain' en un par de comprobaciones usando el indice quizas se evite 1.700.000 (por decir una cifra) de comprobaciones de registros que NO SON PAIS='Spain' y directamente se pone a mirar los 300.000 que sí son. 300.000 en vez de 2.000.000, es digamos casi 7 veces mas rapido. Mas o menos asi lo entiendo yo xD

Pero lo mejor es que lo compruebes tu mismo, abre la consola y ejecuta un:

explain select * from usuarios where PAIS='ES' (o con los nombres de tu tabla)

Y fijate en la columna ROWS, esas son las "comprobaciones" de las que antes hablaba. Ahora crea el indice, y repite la instruccion.... fijate en ROWS, tachann xD

Ah, y un ultimo apunte para terminar. Si esa tabla tiene MUCHAS inserciones de registros nuevos, el motor va a tener que actualizar los indices muy a menudo, y eso digamos que podria ralentizar el rendimiento. Cuando digo MUCHAS, son muchisimas, a centenares por minuto o asi, al menos asi pude yo optimizar algunas tablas de muchos registros...