|
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
|
Traducción
Original
|
Reorganizar y volver a generar índices
En este tema
-
Antes de empezar:
-
Para comprobar la fragmentación de un índice, usando:
-
Para reorganizar o volver a generar un índice, usando:
Detectar la fragmentación
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|---|---|
|
|
|
|
|
|
Nota
|
|---|
|
|
Limitaciones y restricciones
-
Los índices que tienen más de 128 extensiones se vuelven a generar en dos fases independientes: lógica y física. En la fase lógica, las unidades de asignación existentes que utiliza el índice están señaladas para cancelación de asignación las filas de datos se copian y ordenan y luego se mueven a las nuevas unidades de asignación creadas para almacenar el índice recompilado. En la fase física, las unidades de asignación previamente señaladas para cancelación de asignación se quitan físicamente de las transacciones breves que se realizan en segundo plano y no requieren demasiados bloqueos. -
Las opciones del índice no se pueden especificar al reorganizar un índice.
Seguridad
Para comprobar la fragmentación de un índice
-
En el Explorador de objetos, expanda la base de datos que contiene la tabla en la que desea comprobar la fragmentación de un índice. -
Expanda la carpeta Tablas. -
Expanda la tabla en la que desea comprobar la fragmentación de un índice. -
Expanda la carpeta Índices. -
Haga clic con el botón secundario en el índice en el que desea comprobar la fragmentación y seleccione Propiedades. -
Bajo Seleccionar una página, seleccione Fragmentación. La siguiente información está disponible en la página Fragmentación:
Para comprobar la fragmentación de un índice
-
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos. -
En la barra Estándar, haga clic en Nueva consulta. -
Copie y pegue el ejemplo siguiente en la ventana de consulta y haga clic en Ejecutar. USE AdventureWorks2012; GO -- Find the average fragmentation percentage of all indexes -- in the HumanResources.Employee table. SELECT a.index_id, name, avg_fragmentation_in_percent FROM sys.dm_db_index_physical_stats (DB_ID(N'AdventureWorks2012'), OBJECT_ID(N'HumanResources.Employee'), NULL, NULL, NULL) AS a JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id; GOLa instrucción anterior puede devolver un conjunto de resultados similar al siguiente: index_id name avg_fragmentation_in_percent ----------- ----------------------------------------------------- ---------------------------- 1 PK_Employee_BusinessEntityID 0 2 IX_Employee_OrganizationalNode 0 3 IX_Employee_OrganizationalLevel_OrganizationalNode 0 5 AK_Employee_LoginID 66.6666666666667 6 AK_Employee_NationalIDNumber 50 7 AK_Employee_rowguid 0 (6 row(s) affected)
Para reorganizar o volver a generar un índice
-
En el Explorador de objetos, expanda la base de datos que contiene la tabla en la que desea reorganizar un índice. -
Expanda la carpeta Tablas. -
Expanda la tabla en la que desea reorganizar un índice. -
Expanda la carpeta Índices. -
Haga clic con el botón secundario en el índice que desee reorganizar y seleccione Reorganizar. -
En el cuadro de diálogo Reorganizar índices, compruebe que el índice correcto se encuentra en la cuadrícula Índices que se van a reorganizar y haga clic en Aceptar. -
Active la casilla Compactar datos de columnas de objetos de gran tamaño para especificar que se compacten también todas las páginas que contengan datos de objetos grandes (LOB). -
Haga clic en Aceptar.
Para reorganizar todos los índices de una tabla
-
En el Explorador de objetos, expanda la base de datos que contiene la tabla en la que desea reorganizar los índices. -
Expanda la carpeta Tablas. -
Expanda la tabla en la que desea reorganizar los índices. -
Haga clic con el botón secundario en la carpeta Índices y seleccione Reorganizar todo. -
En el cuadro de diálogo Reorganizar índices, compruebe que los índices adecuados están en Índices que se van a reorganizar. Para quitar un índice de la cuadrícula Índices que se van a reorganizar, seleccione el índice y, a continuación, presione la tecla SUPR. -
Active la casilla Compactar datos de columnas de objetos de gran tamaño para especificar que se compacten también todas las páginas que contengan datos de objetos grandes (LOB). -
Haga clic en Aceptar.
Para volver a generar un índice
-
En el Explorador de objetos, expanda la base de datos que contiene la tabla en la que desea reorganizar un índice. -
Expanda la carpeta Tablas. -
Expanda la tabla en la que desea reorganizar un índice. -
Expanda la carpeta Índices. -
Haga clic con el botón secundario en el índice que desee reorganizar y seleccione Reorganizar. -
En el cuadro de diálogo Volver a generar índices, compruebe que el índice correcto se encuentra en la cuadrícula Índices que se van a volver a generar y haga clic en Aceptar. -
Active la casilla Compactar datos de columnas de objetos de gran tamaño para especificar que se compacten también todas las páginas que contengan datos de objetos grandes (LOB). -
Haga clic en Aceptar.
Para reorganizar un índice desfragmentado
-
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos. -
En la barra Estándar, haga clic en Nueva consulta. -
Copie y pegue el ejemplo siguiente en la ventana de consulta y haga clic en Ejecutar. USE AdventureWorks2012; GO -- Reorganize the IX_Employee_OrganizationalLevel_OrganizationalNode index on the HumanResources.Employee table. ALTER INDEX IX_Employee_OrganizationalLevel_OrganizationalNode ON HumanResources.Employee REORGANIZE ; GO
Para reorganizar todos los índices de una tabla
-
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos. -
En la barra de Estándar, haga clic en Nueva consulta. -
Copie y pegue el ejemplo siguiente en la ventana de consulta y haga clic en Ejecutar. USE AdventureWorks2012; GO -- Reorganize all indexes on the HumanResources.Employee table. ALTER INDEX ALL ON HumanResources.Employee REORGANIZE ; GO
Para volver a generar un índice desfragmentado
-
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos. -
En la barra Estándar, haga clic en Nueva consulta. -
Copie y pegue el ejemplo siguiente en la ventana de consulta y haga clic en Ejecutar. En el ejemplo se vuelve a generar un único índice en la tabla Employee. USE AdventureWorks2012; GO ALTER INDEX PK_Employee_BusinessEntityID ON HumanResources.Employee REBUILD; GO
Para volver a generar todos los índices de una tabla
-
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos. -
En la barra Estándar, haga clic en Nueva consulta. -
Copie y pegue el ejemplo siguiente en la ventana de consulta. En el ejemplo se especifica la palabra clave ALL. Así se regeneran todos los índices asociados a la tabla. Se especifican tres opciones. USE AdventureWorks2012; GO ALTER INDEX ALL ON Production.Product REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON, STATISTICS_NORECOMPUTE = ON); GO

Nota