Buscar..


Crear índice agrupado

Con un índice agrupado, las páginas de hojas contienen las filas de la tabla real. Por lo tanto, solo puede haber un índice agrupado.

CREATE TABLE Employees
(
    ID CHAR(900),
    FirstName NVARCHAR(3000),
    LastName NVARCHAR(3000),
    StartYear CHAR(900)
)
GO

CREATE CLUSTERED INDEX IX_Clustered 
ON Employees(ID)
GO

Crear índice no agrupado

Los índices no agrupados tienen una estructura separada de las filas de datos. Un índice no agrupado contiene los valores de clave de índice no agrupado y cada entrada de valor clave tiene un puntero a la fila de datos que contiene el valor clave. Puede haber un máximo de 999 índices no agrupados en SQL Server 2008/2012.

Enlace de referencia: https://msdn.microsoft.com/en-us/library/ms143432.aspx

CREATE TABLE Employees
(
    ID CHAR(900),
    FirstName NVARCHAR(3000),
    LastName NVARCHAR(3000),
    StartYear CHAR(900)
)
GO

CREATE NONCLUSTERED INDEX IX_NonClustered
ON Employees(StartYear)
GO

Mostrar información del índice

SP_HELPINDEX tableName

Índice a la vista

CREATE VIEW  View_Index02
WITH SCHEMABINDING
AS 
SELECT c.CompanyName, o.OrderDate, o.OrderID, od.ProductID 
     FROM dbo.Customers C 
        INNER JOIN dbo.orders O ON c.CustomerID=o.CustomerID  
            INNER JOIN dbo.[Order Details] od ON o.OrderID=od.OrderID   
GO

CREATE UNIQUE CLUSTERED INDEX IX1 ON 
    View_Index02(OrderID, ProductID) 

Índice de caída

DROP INDEX IX_NonClustered ON Employees

Devuelve los índices de tamaño y fragmentación.

sys.dm_db_index_physical_stats (   
    { database_id | NULL | 0 | DEFAULT }  
  , { object_id | NULL | 0 | DEFAULT }  
  , { index_id | NULL | 0 | -1 | DEFAULT }  
  , { partition_number | NULL | 0 | DEFAULT }  
  , { mode | NULL | DEFAULT }  
)  


Sample :

SELECT * FROM sys.dm_db_index_physical_stats  
    (DB_ID(N'DBName'), OBJECT_ID(N'IX_NonClustered '), NULL, NULL , 'DETAILED');  

Reorganizar y reconstruir índice

avg_fragmentation_in_percent value Declaración correctiva
> 5% y <= 30% REORGANIZAR
> 30% RECONSTRUIR
ALTER INDEX IX_NonClustered ON tableName REORGANIZE;  


ALTER INDEX ALL ON Production.Product
 REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,
          STATISTICS_NORECOMPUTE = ON);

Reconstruir o reorganizar todos los índices en una tabla

La reconstrucción de los índices se realiza utilizando la siguiente declaración

ALTER INDEX All ON tableName REBUILD;

Esto elimina el índice y lo vuelve a crear, eliminando la administración, recupera el espacio en disco y vuelve a ordenar las páginas de índice.

También se puede reorganizar un índice usando

ALTER INDEX All ON tableName REORGANIZE;

que utilizará recursos mínimos del sistema y desfragmentará el nivel de hoja de los índices agrupados y no agrupados en tablas y vistas al reordenar físicamente las páginas de nivel de hoja para que coincidan con el orden lógico, de izquierda a derecha, de los nodos de hoja

Reconstruir toda la base de datos de índice

EXEC sp_MSForEachTable 'ALTER INDEX ALL ON ? REBUILD'

Indice de investigaciones

Podría usar "SP_HELPINDEX Table_Name", pero Kimberly Tripp tiene un procedimiento almacenado (que se puede encontrar aquí ), que es un mejor ejemplo, ya que muestra más información sobre los índices, incluidas las columnas y la definición del filtro, por ejemplo:
Uso:

USE Adventureworks 
EXEC sp_SQLskills_SQL2012_helpindex 'dbo.Product'

Alternativamente, Tibor Karaszi tiene un procedimiento almacenado (que se encuentra aquí ). El último también mostrará información sobre el uso del índice y, opcionalmente, proporcionará una lista de sugerencias de índice. Uso:

USE Adventureworks 
EXEC sp_indexinfo 'dbo.Product' 


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow