9.4.5 índice no agrupado para establecer los principios y métodos - Puntero

9.4.5 índice no agrupado para establecer los principios y métodos - Puntero

http://images.cnblogs.com/cnblogs_com/CareySon/201209/201209061024355084.jpg

Es un tipo de datos de índice no agrupado almacenados en una estructura de índice de la tabla separada puede reordenar las columnas en uno o más seleccionados. índice no agrupado por lo general ayuda a encontrar la tabla de base de datos de búsqueda a través de más rápido, a veces puede responder por completo las consultas de los datos en el índice no agrupado, motor de base de índice no agrupado puede apuntar a las filas de la tabla subyacente. 

En general, para crear un índice no agrupado para mejorar el rendimiento de consulta de índice agrupado no cubre el utilizado con frecuencia, o en ausencia de un índice de la tabla agregada (llamado un montón) Encontrar la línea. Puede crear índice no agrupado múltiple en la tabla o vista indizada.

1 sistema de índice no agrupado estructura

No agrupado los valores de clave de índice y la tabla de punteros contiene el almacenamiento de datos de índice de la fila ubicación localizador. Puede crear índice no agrupado múltiple en la tabla o vista indizada. Por lo general, el índice no agrupado está diseñado para mejorar el uso frecuente, no estableció el rendimiento agrupado las consultas de índice.

índice no agrupado y una estructura de índice de árbol B agrupado con el mismo, una diferencia significativa entre ellos radica en los siguientes puntos:

Base de datos de las filas de la tabla el orden de clasificación y almacenar la clave de agrupación.

el nivel de hoja de índice no agrupado se determina por la página de índice en lugar de páginas de datos.

No agrupado puntero del índice de la fila o filas localizador señalando línea, fila o clave de índice agrupado, de la siguiente manera:

Si la tabla es un montón (lo que significa que no hay ninguna tabla índice agrupado), posicionando el puntero de fila está apuntando a la línea. El puntero, el número de líneas en la página y la página que genera el identificador de archivo (ID). puntero de fila entera se llama ID (RID).

Si la tabla tiene un índice agrupado en el índice o la vista del índice agrupado, la línea es una clave de índice agrupado línea de localizador.

2 Principios de diseño no agrupados índice

1 Consideraciones de base de datos

Actualizaciones menos exigente, pero contiene grandes cantidades de datos o tabla de base de datos para mejorar el rendimiento de las consultas se pueden beneficiar de muchos índices no agrupados.

Procesamiento de transacciones en línea (OLTP) aplicaciones, y contiene una tabla de base de datos se actualiza con frecuencia debe evitar índice excesivo. Además, el índice debe ser estrecha, es decir, la columna mejor.

2 Notas de consulta

Contiene la columna a menudo incluido en los criterios de búsqueda (por ejemplo, devuelve un resultado exacto de la cláusula WHERE) consulta.

Uso unirse o cláusula GROUP BY. Una pluralidad de índice no agrupado debe ser creado para unirse a columnas y operaciones implicadas en el paquete, la creación de un índice agrupado es cualquier columna de clave externa.

3 Notas de Lie

Cubre la consulta.

O cuando el índice contiene todas las columnas de una consulta, el rendimiento se puede mejorar. El optimizador de consultas puede encontrar todos los valores de columna en el índice; no acceder a los datos de tabla o índice agrupado, reduciendo así el disco de operaciones de E / S. Tener que añadir un índice de columna contiene una cubierta de la columna, en lugar de crear una clave de índice de ancho.

Un gran número de valores distintos . Si sólo unos pocos valores distintos, por ejemplo, sólo 1 y 0, la mayoría de consultas no utilizará el índice, ya que el recorrido de tabla suele ser más eficaz.

Incluyen 3 comprende una columna de índice con un índice no agrupado

Rediseño tamaño de clave de índice mayor índice no agrupado, de manera que sólo se utiliza como una búsqueda y encontrar las columnas de clave. Todas las demás columnas que cubren consulta para incluir columnas sin clave. De esta manera, vamos a tener todas las columnas necesarias para cubrir la consulta, pero la clave del índice en sí es pequeño, y alta eficiencia.

Como crear un no agregada 4

1 ningún índice

dbcc SHOWCONTIG (L05TEST)

TABLA ejecutado nivel de exploración.

- Páginas de escaneo ................................: 1789027

 

 DBCC  DROPCLEANBUFFERS 

plaza_id SELECT, ent_plazaid, count (*) a partir de L05TEST donde transoccurtime> '01/04/2018' y transoccurtime < '04/06/2018' grupo por plaza_id, ent_plazaid;

Tabla 'L05TEST'. SCAN contar 3, lecturas lógicas 1.789.027, lecturas físicas 0, 1,789,027 tiempos de lectura anticipada, vaselina lecturas lógicas 0, física lee 0 vaselina, vaselina prelectura 0 veces.

 SQL servidor de ejecución de tiempo: tiempo de CPU = 2624 ms, tiempo transcurrido = 108 961 milisegundos.

                                  

 

2 Crear un índice no agrupado

 

CREAR NONCLUSTERED ÍNDICE [NoCIndex-trans] EN [dbo] . [L05TEST]

(

         [TransOccurTime] ASC

)

 

      DBCC  DROPCLEANBUFFERS 

SHOWCONTIG dbcc (L05TEST), excepto el uso de la mesa de exploración

- Páginas de escaneo ................................: 1789027

 

ACTUALIZACIÓN DE ESTADISTICAS L05TEST --- actualizar la base de datos del cerebro

      DBCC  DROPCLEANBUFFERS 

 

plaza_id SELECT, ent_plazaid, count (*) a partir de L05TEST donde transoccurtime> '01/04/2018' y transoccurtime < '04/06/2018' grupo por plaza_id, ent_plazaid;

Tabla 'L05TEST'. SCAN contar 3, lecturas lógicas 359678, lecturas físicas 2852, 13714 tiempos de lectura anticipada, vaselina lecturas lógicas 0, física lee 0 vaselina, vaselina prelectura 0 veces.

 SQL Server tiempo de ejecución:

   CPU = 296 ms, tiempo transcurrido = 4142 ms.

 

      declaraciones de hardware muy rápido para ver si hay un escaneo completo de tabla

seleccione nombre_base_de_datos (database_id) como N't_branch', - 库 名

        object_name (a.object_id) como N'TopProjectNew', - 表明

        b.name N 'Index Name',

        user_seeks,

        user_scans,

        user_lookups,

        last_user_seek N 'buscó última vez'

       last_user_scan N 'última vez exploración',

        filas como 'número de filas de la tabla' N

sys.dm_db_index_usage_stats de una unión

      b sys.indexes

      en a.index_id = b.index_id

     y a.object_id = b.object_id

     c unirse a sysindexes

      en c.id = b.object_id

donde database_id = db_id ( 't_branch') --- en la base de datos que desea ver

 y object_name (a.object_id) no como 'sys%' y object_name (a.object_id) = 'L05TEST'

 ordenado por user_seeks, user_scans, object_name (a.object_id)

 

2 Crear un índice no agrupado - contiene la columna

 

CREAR NONCLUSTERED ÍNDICE [NonCIndex-trans-in] EN [dbo] . [L05TEST]

(

         [TransOccurTime] ASC

)

INCLUDE (      [Plaza_ID] ,

         [ENT_PlazaID] )

 

ACTUALIZACIÓN DE ESTADISTICAS L05TEST --- actualizar la base de datos del cerebro

      DBCC  DROPCLEANBUFFERS 

 

plaza_id SELECT, ent_plazaid, count (*) a partir de L05TEST donde transoccurtime> '01/04/2018' y transoccurtime < '04/06/2018' grupo por plaza_id, ent_plazaid;

 

Tabla 'L05TEST'. SCAN contar 1, lecturas lógicas 1342, lecturas físicas 4, 1338 veces la lectura anticipada, vaselina lecturas lógicas 0, física lee 0 vaselina, vaselina prelectura 0 veces.

 SQL Servidor de Ejecución Hora: CPU = 62 ms, tiempo transcurrido = 459 ms.

 

Publicado 37 artículos originales · ganado elogios 0 · Vistas 2417

Supongo que te gusta

Origin blog.csdn.net/syjhct/article/details/86669690
Recomendado
Clasificación