Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Duda con creacion de indices

Estas en el tema de Duda con creacion de indices en el foro de Bases de Datos General en Foros del Web. Bueno necesito optimizar unas tablas ya que estas tablas nisiquiera tienen pka y tiene mas de 2 millones de datos. pero leyendo en internet me ...
  #1 (permalink)  
Antiguo 11/01/2010, 09:17
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años
Puntos: 7
Duda con creacion de indices

Bueno necesito optimizar unas tablas ya que estas tablas nisiquiera tienen pka y tiene mas de 2 millones de datos.

pero leyendo en internet me encontre con esto

Utilice índices sobre campos con valores únicos. Los índices funcionan peor si el campo tiene valores duplicados.

Leer más: http://www.arsys.info/programacion/b...#ixzz0cJi2XAbH


y quiero poner indices para que busquen mas rapido pero el campo donde quiero poner el indice no es unico ya qes un numero del 0 al 10
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


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

Se referirá a indices primarios, donde no se permiten duplicados de datos. Pero estan los indices secundarios que son importantisimos tener los justos y necesarios.

No soy un experto ni mucho menos de la materia, pero lo ideal es crear indices secundarios para aquellos campos MUY usados en los WHERE de tus consultas, eso te va a hacer aumentar el rendimiento enormemente.

Tambien te recomiendo que uses el EXPLAIN en tu consola para conocer que consultas son las que más carga provocan.

A ver si alguien aconseja algo mas, saludos y buen karma
  #3 (permalink)  
Antiguo 11/01/2010, 10:19
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Duda con creacion de indices

Imagina los indices como un indice de un libro. Son creados bajo la misma teoría. Si abres un libro, vas al indice y vas a buscar la palabra "rendimiento" y encuentras que hay 1000 coincidencias en el indice. Será que es efectiva la búsqueda? Si los campos son únicos, fácilmente identificas la palabra e incrementas el rendimiento en la búsqueda de la palabra.

Por eso es necesario identificar en que campos de una tabla determinada se aprovechan al máximo el uso de indices. Por que puedes crear indices en cualquer campo, pero si seleccionas mal los campos, lo que haras es que no optimizaras el tiempo de consulta y disminuiras la performance de la base de datos ya que los indices consumen bastantes recursos.

saludos

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 11/01/2010, 13:11
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años
Puntos: 7
Respuesta: Duda con creacion de indices

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
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #5 (permalink)  
Antiguo 11/01/2010, 13:24
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: Duda con creacion de indices

crea index a cada campo de la tabla, para que las consultas sean mas rapidas, una vez creado los index correo un optimize

alter table `DATA_BASE`.`TABLA` add index `NOMBRE_TUPLA` (`NOMBRE_TUPLA`)
OPTIMIZE TABLE DATA_BASE
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #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, 8 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...

Etiquetas: indices
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:28.