Sunteți pe pagina 1din 25

Creacin y mantenimiento de ndices

Introduccin
Creacin de ndices

Opciones de creacin de ndices


Mantenimiento de ndices Introduccin a las estadsticas Consultas en la tabla sysindexes Configuracin de ndices mediante el Asistente para optimizacin de ndices Consideraciones acerca del rendimiento

Creacin de ndices

Creacin y eliminacin de ndices Creacin de ndices nicos Creacin de ndices compuestos Creacin de ndices en columnas calculadas Obtencin de informacin acerca de los ndices existentes

Creacin y eliminacin de ndices

Uso de la instruccin CREATE INDEX

Los ndices se crean automticamente en tablas con las restricciones PRIMARY KEY o UNIQUE
Los ndices pueden crearse en vistas si cumplen ciertos requisitos

USE Northwind CREATE CLUSTERED INDEX CL_lastname ON employees(lastname)

Uso de la instruccin DROP INDEX

USE Northwind DROP INDEX employees.CL_lastname

Creacin de ndices nicos


USE Northwind CREATE UNIQUE NONCLUSTERED INDEX U_CustID ON customers(CustomerID)

Customers
CustomerID QUICK BONAP 12 RANCH CompanyName QUICK-Stop Bon app' Walking grande Rancho ContactName Horst Kloss Laurence Lebihan Henry David Thoreau Sergio Gutirrez

Los valores de clave duplicados no se permiten cuando se agrega a la tabla una fila nueva RANCH Sant Gourmet Jonas Bergulfsen

Creacin de ndices compuestos


USE Northwind CREATE UNIQUE NONCLUSTERED INDEX U_OrdID_ProdID ON [Order Details] (OrderID, ProductID)

Order Details
OrderID 10248 10248 10248 ProductID UnitPrice Quantity 11 42 72 14.000 9.800 34.800 12 10 5 Discount 0.0 0.0 0.0

Columna 1

Columna 2

Clave compuesta

Creacin de ndices en columnas calculadas

Es posible crear ndices en columnas calculadas cuando se dan las siguientes circunstancias:

La expresin de la columna calculada es determinista y precisa La opcin de conexin ANSI_NULL est activada La columna calculada no puede evaluar los tipos de datos text, ntext o image Las opciones SET requeridas se activan cuando crea el ndice y cuando las instrucciones INSERT, UPDATE o DELETE cambian el valor del ndice Se desactiva la opcin NUMERIC_ROUNDABORT

Es posible que el optimizador de consultas ignore un ndice en una columna calculada

Obtencin de informacin acerca de los ndices existentes

Uso del procedimiento almacenado del sistema sp_helpindex

USE Northwind EXEC sp_helpindex Customers

Uso del procedimiento almacenado de sistema sp_help nombreTabla

Opciones de creacin de ndices

Uso de la opcin FILLFACTOR Uso de la opcin PAD_INDEX

Uso de la opcin FILLFACTOR

Especifica cunto debe llenarse la pgina

Afecta a las pginas del nivel de hoja


Con Funk White Rudd White Barr ... 470401 ... 470402 ... 470403 ... 470501 ... 470502 ... 470503 Akhtar Funk Smith Martin Smith Ota ... 470601 ... 470602 ... 470603 ... 470604 ... 470701 ... 470702 Martin Phua Jones Smith Ganio Jones ... 470801 ... 470802 ... 470803 ... 470804 ... 470901 ... 470902

Pginas de datos llenas

Fillfactor 50 = 50% de pginas de hoja llenas


Con ... 470401 Rudd ... 470501 Akhtar ... 470601 Martin ... 470604 Martin ... 470801 Smith ... 470804 Funk ... 470402 White ... 470502 Funk ... 470402 Smith ... 470701 Phua ... 470802 Ganio ... 470901 White ... 470403 Barr ... 470503 Smith ... 470603 Ota ... 470702 Jones ... 470803 White ... 470902

Uso de la opcin PAD_INDEX

La opcin PAD_INDEX se aplica a las pginas de ndice no situadas en el nivel de hoja

Si no se especifica PAD_INDEX, el valor predeterminado deja espacio para una entrada de fila en las pginas no situadas en el nivel de hoja
El nmero de filas en las pginas no situadas en el nivel de hoja nunca es menor que dos PAD_INDEX utiliza el valor de FILLFACTOR

USE Northwind CREATE INDEX OrderID_ind ON Orders(OrderID) WITH PAD_INDEX, FILLFACTOR=70

Mantenimiento de ndices

Fragmentacin de los datos Instruccin DBCC SHOWCONTIG Instruccin DBCC INDEXDEFRAG Opcin DROP_EXISTING

Fragmentacin de los datos

Cmo se produce la fragmentacin

SQL Server reorganiza las pginas de ndice cuando se modifican los datos La reorganizacin hace que se dividan las pginas de ndice Elimine y vuelva a crear un ndice, y especifique un valor para FILLFACTOR Vuelva a generar un ndice y especifique un valor para FILLFACTOR La fragmentacin de datos puede ser beneficiosa en el entorno OLTP La fragmentacin de datos puede ser desfavorable para el entorno Analysis Server

Mtodos para administrar la fragmentacin

Entorno de trabajo

Instruccin DBCC SHOWCONTIG

Qu determina la instruccin DBCC SHOWCONTIG


Si una tabla o un ndice estn muy fragmentados Si las pginas de datos o de ndices estn llenas Si las tablas han sido muy modificadas

Cundo ejecutar la instruccin DBCC SHOWCONTIG

Si las tablas contienen datos importados


Si las tablas parecen provocar un bajo rendimiento en las consultas

Instruccin DBCC INDEXDEFRAG

Uso de la instruccin DBCC INDEXDEFRAG


Desfragmenta el nivel de hoja de un ndice Organiza las pginas de nivel de hoja de forma que el orden fsico coincida con el orden lgico de izquierda a derecha Mejora el rendimiento del recorrido de ndices

Desfragmentacin y regeneracin de ndices

Opcin DROP_EXISTING
Regeneracin de un ndice Reorganiza las pginas de hoja Quita la fragmentacin Vuelve a calcular las estadsticas de ndices Cambio de las caractersticas de un ndice Tipo Columnas del ndice Opciones

CREATE UNIQUE NONCLUSTERED INDEX U_OrdID_ProdID ON [Order Details] (OrderID, ProductID) WITH DROP_EXISTING, FILLFACTOR=65

Introduccin a las estadsticas

Cmo se recopilan las estadsticas Cmo se almacenan las estadsticas Creacin de estadsticas Actualizacin de estadsticas Vista de las estadsticas

Cmo se recopilan las estadsticas

Lee los valores de columna o una muestra de ellos

Produce una lista de valores distribuida y ordenada uniformemente

Realiza un recorrido completo o un muestreo de las filas

Determina dinmicamente el porcentaje de filas que se van a muestrear en funcin del nmero de filas que hay en la tabla De la tabla o del ndice no agrupado ms pequeo creado con las columnas Todas las filas de la pgina de datos se utilizan para actualizar la informacin estadstica

Selecciona muestras

Cmo se almacenan las estadsticas


Sales
state

AL AK CA CA CA CT IL IL IL IL IL MT OR OR PA TX TX WA WA WA WI WY

Paso AL

Paso n 0

CA
IL IL OR TX WA WY

1
2 3 4 5 6 7 sysindexes
statblob

AL CA IL IL OR TX WA WY

Creacin de estadsticas
Creacin automtica de estadsticas

Para columnas indizadas que contienen datos


Para columnas no indizadas que se utilizan en un predicado de combinacin o en una clusula WHERE Columnas que no estn indizadas Todas las columnas de un ndice compuesto, excepto la primera

Creacin manual de estadsticas


Actualizacin de estadsticas

Frecuencia de actualizacin de las estadsticas Actualizacin automtica de estadsticas Actualizacin manual de estadsticas

Si crea un ndice antes de introducir datos en una tabla Si la tabla se trunca

Si agrega muchas filas a una tabla que contiene un mnimo de datos o ningn dato, y tiene pensado consultar inmediatamente esa tabla

Vista de las estadsticas

La instruccin DBCC SHOW_STATISTICS devuelve la informacin estadstica en la pgina de distribucin de un ndice o una columna La informacin estadstica incluye:

La hora en que las estadsticas se actualizaron por ltima vez El nmero de filas muestreadas para producir el histograma Informacin de densidad

Longitud promedio de la clave


Informacin del paso del histograma

Consultas en la tabla sysindexes

Almacena la informacin de la tabla y del ndice


Tipo de ndice (indid) Espacio utilizado (dpages, reserved y used) Fillfactor (OrigFillFactor)

Almacena las estadsticas de cada ndice

Configuracin de ndices mediante el Asistente para optimizacin de ndices

Utilice el Asistente para optimizacin de ndices para:


Recomendar o comprobar la configuracin de ndices ptima Facilitar el anlisis del costo Recomendar formas de ajustar la base de datos Especificar criterios cuando evala una carga de trabajo Tablas a las que se hace referencia mediante consultas cruzadas de base de datos que no existen

No utilice el Asistente para optimizacin de ndices en:

Tablas del sistema, restricciones PRIMARY KEY, ndices nicos

Consideraciones acerca del rendimiento

Cree ndices basados en claves externas Cree los ndices agrupados antes que los no agrupados Considere la creacin de ndices compuestos Cree varios ndices para una tabla que se lea con frecuencia Utilice el Asistente para optimizacin de ndices

S-ar putea să vă placă și