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

PK compuesta o varios index

Estas en el tema de PK compuesta o varios index en el foro de Mysql en Foros del Web. Hola saludos... estoy modificando una base de datos, bueno varias, el asunto es que tienen un buen diseño pero estan carente de INDEX, la consulta ...
  #1 (permalink)  
Antiguo 31/01/2008, 12:18
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años
Puntos: 4
Información PK compuesta o varios index

Hola saludos...
estoy modificando una base de datos, bueno varias, el asunto es que tienen un buen diseño pero estan carente de INDEX, la consulta es la siguiente...

¿ Es mas optimo tener un PK compuesto de varios campos?
¿ Es bueno tener INDEX compuesto de varios campos?
¿ Se recomienda tener campos INDEX y PK a la vez?

he probado varias soluciones, pero el problema que que tengo es que al ser una base de datos pequeña no hace mucha diferencia el momento de las QUERYS.
podrian ayudarme con esta duda....
en realidad es como una piedrecilla en mi zapato y molesta el no saber....

Gracias......
__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo
  #2 (permalink)  
Antiguo 01/02/2008, 05:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Re: PK compuesta o varios index

Para responderte deberíamos recordar lo mejor posible qué significa PK y qué es un índice:

- Primary Key (PK) es un atributo o conjunto de atributos (campos) que identifica unívocamente una instancia (registro) de una relación (tabla).
Dicho esto, entonces una PK compuesta puede aparecer cuando la tabla en cuestión no tiene ningún atributo propio que asegure esa identificación. En este sentido, si tal es la cosa, puedes usarla compuesta o... Normalizar la tabla y ponerla en 3FN, lo que implica que si no hay un determinante de la relación se le agrega uno (p.e. un PK numérico incremental) y listo.

- Los índices son sistemas de registros que mantienen un ordenamiento predefinido de los registros según ciertos criterios basados en los atributos propios de esa relación. En definitiva, para el SO son archivos, por lo que la forma en que los definas afectará el rendimiento y el volumen de los mismos.
Sabemos que existen dos tipos de índices: Densos y dispersos. Se define como índice denso a un índice de alta selectividad y en el cual cada posición remite a la posición física del registro buscado; además se usan para la optimización física de los registros, por lo cual no puede existir más que uno por tabla. Estos son los índices de PK. Como te imaginas, si usas un criterio de clave compuesta para generar un índice primario, la optimización de las tablas y de la base entera bajaría enormemente su performance, ya que no es lo mismo ordenar 3.000.000 de registros por un único campo, que por cinco campos.
Los índices dispersos (a grandes rasgos) son índices paginados basados en Árboles B, en los que cada entrada puede contener un conjunto de registros, de modo que la búsqueda de un registro definido puede implicar la lectura en varios niveles del árbol para recuperar las páginas del índice. La eficiencia de estos índices está en las búsquedas y no en la optimización de las tablas, para los que no tienen efecto.

Resumiendo:

1. Mientras más pequeña sea la clave y más unívoca la identidad, mejor para la optimización. No combines campos para las PK a menos que no exista otra alternativa.

2. Los índices INDEX, HASH o TREE son relativamente independientes de los PRIMARY. de los primeros puedes tener tantos como te sean eficientes en las búsquedas. De los segundos sólo uno.

3. Si los índices carecen de efecto en las búsquedas, entonces o están mal definidos o son innecesarios. Para saber si están mal definidos, fijate en la sentencia de la consulta y fíjate qué conjunto de datos combinados NUNCA se repite, no importa cuçántos registros tenga la tabla. Esos son los componentes del índice.
  #3 (permalink)  
Antiguo 01/02/2008, 09:02
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años
Puntos: 4
Sonrisa Re: PK compuesta o varios index

Agradezco mucho tu respuesta....
era una duda que me tenia un poco trancado,
creo que a mas de alguien le sucede que al modificar sistemas o bases de datos creadas por otros nos ahogamos en un baso de agua, pero, te reitero muchas gracias por tu ayuda y claro, se me alclara mas la pelicula respecto al uso de las PK compuestas que en realidad era la gran duda....

hice las modificaciones correspondientes a las bases de datos agregue un PK autoincrement y cree indices compuestos para las tablas mas complejas, los rastreos se mejoraron un poco mas...

reitero mis agradecimientos por tan buena respuesta....

__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo
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




La zona horaria es GMT -6. Ahora son las 06:05.