¿Qué es un índice agrupado?


15

Necesito una breve explicación del índice agrupado.

  • ¿Qué es un índice agrupado?
  • ¿Cuáles son las mejores prácticas para usar el índice agrupado?

Es una buena idea usar fechas en un índice agrupado ya que siempre se agregan datos nuevos al final de la tabla.
Ralph Winters

1
Posiblemente, pero no siempre.
mrdenny

@mrdenny: ¿podría explicar cuándo no sería así?
Ralph Winters

1
Si las filas se ingresan fuera de orden. Si la tabla suele ser consultada por la clave primaria. Si la clave primaria es un INT (o más pequeño) y habrá muchos índices no agrupados en la tabla, entonces una clave agrupada de fecha y hora sería más grande y menos eficiente. Si la columna de fecha nunca consultará la tabla, entonces usar es como la clave de agrupación no valdría la pena, ya que solo se usarían los índices no agrupados.
mrdenny

@mrdenny: también si la tabla no tiene una columna de fecha (un caso de subconjunto de su última :)
ypercubeᵀᴹ

Respuestas:


15

En lenguaje sencillo...

Un directorio telefónico: los datos son el índice / el índice son los datos. Para buscarte, comenzaría con Rezaei, Amir, por ejemplo. No se necesita búsqueda externa.

En términos de base de datos:

Los datos de la tabla y el índice agrupado son uno y el mismo (en SQL Server, también InnoDB, Oracle IOT)

La mejor práctica es estrecha, numérica, estrictamente creciente (piense en IDENTIDAD o columna Autonumérico). Los tipos de datos como los GUID no son una buena idea

Enlaces para leer (para evitar hinchar esta respuesta)

Editar, para explicar completamente mis sugerencias de mejores prácticas, siga el enlace en el comentario de Eric Humphrey: Reina de la indexación: Kimberly Tripp



1
Y ahí radica el problema de aplicar la "mejor práctica" sin contexto. Por ejemplo, si el criterio de búsqueda principal para una tabla grande buscada con frecuencia es un rango de fechas, su mejor ubicación para el índice agrupado es la fecha en la que se busca NO la clave principal. Decir que la tabla y el índice agrupado son uno y lo mismo es demasiado simplificado. Los datos se almacenan realmente en el orden dictado por el índice agrupado. Entre otras cosas, esto significa que los índices agrupados son particularmente útiles para búsquedas de rango que devuelven el conjunto de datos completo.
Russell Steen el

2
@Russell Steen: 1. Incluí enlaces 2. OP tuvo que preguntar, considere a qué nivel lancé esta respuesta en 3. Eric Humphrey proporcionó un enlace de creación. Podemos analizar caso por caso lo que los muchachos más experimentados sabemos y entendemos, pero ¿estamos aquí para ayudar a educar o abrumar ...?
gbn

Escucho lo que dices. El problema no está en su respuesta en sí, sino en el hecho de que personas menos experimentadas que usted corren citando y aplicando algo porque es "la mejor práctica" sin comprender el uso y el contexto para el que se escribió la mejor práctica. argumentan que sí, estamos aquí para educar y que citar las mejores prácticas sin proporcionar más contexto directamente en la publicación no hace un buen trabajo.
Russell Steen

2
Oh, acabo de notar la SQL-Serveretiqueta, desprecio.
ypercubeᵀᴹ

3

Es un índice en los datos en sí, de modo que los registros se ordenan físicamente por el campo en el que tiene el índice agrupado. Es por eso que solo puede tener un índice agrupado por tabla.

El índice no agrupado no es tan rápido para las búsquedas, pero puede tener muchos de estos tipos de índices en una tabla.


3
Los índices no agrupados pueden ser tan eficientes para las búsquedas, si el índice no agrupado cubre la búsqueda en cuestión.
Russell Steen el

@Russell No hay forma de que pueda ser más rápido ya que el índice ha forzado el orden de clasificación real de los datos. No hay una manera más simple / rápida para que SQL o cualquier RDBMS encuentren la información que necesitan.
kacalapy

44
No dije más rápido. Un índice de cobertura tiene todos los datos solicitados en la selección en el índice - EN ORDEN, en una ubicación separada en el disco. Por lo tanto, una selección contra un índice de cobertura coincidente nunca llega a la mesa.
Russell Steen

2
Un NCI de cobertura probablemente será más pequeño, lo que significa menos páginas para leer y más rápido.
Martin Smith

La razón para tener solo un índice agrupado en una tabla no es la ordenación física, las páginas de índice siempre están ordenadas lógicamente y no se garantiza la asignación contigua de páginas. Solo puede tener un índice agrupado por tabla porque el índice agrupado es la tabla misma, y ​​los índices no agrupados son las copias de la tabla con las columnas requeridas.
Manoj Pandey
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.