Acerca de indices y tamaños...

177 views
Skip to first unread message

Carlos Miguel FARIAS

unread,
Feb 12, 2016, 7:07:40 AM2/12/16
to Grupo Fox
En este artículo se explica como calcular el tamaño de indices en SQL Server.
Es muy interesante e ilustrativo, porque sirve como base para estimar el tamaño de indices en otros SGBD.
Es interesante porque muestra que en definitiva, lo que hace eficiente un índice no si es numérico o no, si no que la cantidad de bytes físicos sea lo menor posible.
A mi entender, p.e. un indice cluster es un arma de doble filo, porque aunque pequeño en si mismo (comparativamente), obliga que todos los otros indices tengan que pasar a través de él para acceder al dato.
En el caso de procesar en el orden del indice cluster, por supuesto el acceso vuela.
Además, al insertarse una fila, no solo reacomoda el índice si no datos en las tablas.
S.E.o M.I.
Saludos: Miguel, La Pampa (RA)

Larga Vida y Prosperidad
Que la Fuerza los acompañe

Antonio Meza

unread,
Feb 12, 2016, 12:23:08 PM2/12/16
to Comunidad de Visual Foxpro en Español
El tamaño importa dependiendo a quien le preguntes!!!! jajajajajajaj

Feliz Viernes!!!

saludos
Antonio Meza

Fernando D. Bozzo

unread,
Feb 12, 2016, 1:50:43 PM2/12/16
to Comunidad de Visual Foxpro en Español
Yo creo que una de las principales ventajas de los índices cluster es que en el caso de tener que usar más de uno, cada uno puede ser accedido simultáneamente, cosa que estando todos juntos no es posible.

Carlos Alfaro

unread,
Feb 12, 2016, 4:16:22 PM2/12/16
to publice...@googlegroups.com

Muchas gracias maestro, lo voy a ver.

 

Buen día

 

 

Carlos Alfaro

mpulla

unread,
Feb 12, 2016, 5:30:57 PM2/12/16
to Comunidad de Visual Foxpro en Español
Hola Miguel.

Hasta donde recuerdo Sql Server se apoya mucho en indices cluster una de las razones es la que comenta Fernando, hay que saberlo implementar de lo contrario puedes castigar el perform, cuando una tabla no tiene un indice cluster se lo conoce como monto, es decir el orden de los datos están de acuerdo a como ingresa la data.

Todos los indices tiene apuntadores a la data tengan o no un indice cluster, en Sql Server tiene indices a los que puedes ademas de la expresión puedes anexarle campos con el fin de tener un consulta cubierta, es decir Sql Server ve si tiene el indice optimiza la consulta y si ademas ve que el indice tiene campos anexados (por decirlo de alguna manera) y estos satisface los campos seleccionados entonces los aprovecha, tiene un mejor perform, al no tener que ir a buscar los datos en la tabla.

En estos momentos no recuerdo el nombre de el indice.

Saludos.
Mauricio

Carlos Miguel FARIAS

unread,
Feb 13, 2016, 5:32:27 PM2/13/16
to Grupo Fox
Antonio: El tamaño determina si es pene o da pena, si lastima o da lástima.
Fernando: Si mal no recuerdo de mi especialización en SQL Server, una tabla puede tener un solo índice Cluster, no enganche de que puedo usarlos todos juntos (?)
El índice cluster tiene la ventaja de que como direcciona a páginas de registros, tiene menor cantidad de niveles, por lo que el acceso aleatorio usando dicha clave es más rápido. Además, también es más rápido para el proceso secuencial en orden de esa clave.
Cuando hay un indice cluster, los demás índices tienen para acceder, pasar a través del indice cluster. De ahi que en algunos casos, conviene verificar (testear) si se logra mejor rendimiento (en general) o no.
El índice cluster, va reacomodando datos cuando se va cargando, lo que no pasa con los otros, tal como dice Mauricio (mpulla). Los índices no cluster de SQL Server son equivalentes a los de VFP, cuando no hay cluster. Cuando hay cluster, debe pasar por el indice cluster para acceder a los datos.
Esto se debe a que los datos en una tabla con indice cluster, reacomoda sus filas dinámica mente con inserciones o cambio de valor de clave cluster, por lo que, si los otros índices apuntaran a datos directamente, cuando insertas algo, los datos se mueven físicamente y todos los indices deberían "reindexarse".
Por eso, al crear un índice cluster es muy importante analizar como será el flujo de carga y/o modificaciones de clave cluster, para prever lugar para inserciones en las páginas de datos que reduzcan la cantidad, subdivisiones de dichas páginas.
Saludos: Miguel, La Pampa (RA)

Larga Vida y Prosperidad
Que la Fuerza los acompañe si lo vuestro da pena y lástima

Antonio Meza

unread,
Feb 13, 2016, 7:02:59 PM2/13/16
to Comunidad de Visual Foxpro en Español
jajaja el que hambre tiene en pan piensa !!!! jajajaja

Me refería que si le preguntas a un programador el tamaño del indice no importa, si le preguntas a un diseñador de base de datos el tamaño si importa!!! 

Lo mas curioso de los Indices Cluster, es que si tu no creas ningun indice en una tabla, algunos servidores de bases de datos te crean un indice Cluster con un Autoincrementable caso de MariaDb y Mysql, desconozco si Sql Server lo hace, y aunque no lo puedas ver esta escondido, lo digo porque muchos dicen que si una tabla tiene un solo registro para que crearle un PK AI, pues la respuesta ya la tienen, si no lo hacen ustedes el servidor lo hará jajajaj.

Creo que el Maestro Fernando se refiere a los indices no Cluster que en ocasiones es mejor usar que uno Cluster.

Hay 2 tipos de indices Agrupados y no Agrupados, los Agrupados se les denomino Indice Cluster y este solo puede existir uno por tabla y esta contenido dentro de los campos que se usaron como indice, es decir contenido en la propia tabla, y los no agrupados que pueden existir varios para una tabla pues estos están separados de está.

Hay muy buena literatura respecto a entender como funciona un indice para luego tener buenas bases y decidir cual sera mejor, y apoyarse en las herramientas de análisis para ver si la elección al final resulto buena o corregirla.

saludos
Antonio Meza
Reply all
Reply to author
Forward
0 new messages