0% encontró este documento útil (0 votos)
9 vistas3 páginas

Create Indexes

Cargado por

masaohueda125
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
9 vistas3 páginas

Create Indexes

Cargado por

masaohueda125
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 3

1.

Índice Clustered

Un índice clustered organiza los datos físicamente en la tabla en función de los valores de
una o más columnas.

-- Crear un índice clustered en la tabla Sales.SalesOrderHeader basado en la columna


SalesOrderID

CREATE CLUSTERED INDEX IX_SalesOrderHeader_SalesOrderID

ON Sales.SalesOrderHeader (SalesOrderID);

2. Índice Nonclustered

Un índice nonclustered crea una estructura separada que contiene las claves del índice y
punteros a las filas de datos.

-- Crear un índice nonclustered en la tabla Person.Person sobre la columna LastName

CREATE NONCLUSTERED INDEX IX_Person_LastName

ON Person.Person (LastName);

3. Índice Unique (Único)

Un índice único garantiza que no haya valores duplicados en las columnas del índice.

-- Crear un índice unique en la columna EmailAddress de la tabla Person.Person

CREATE UNIQUE NONCLUSTERED INDEX IX_Person_EmailAddress

ON Person.Person (EmailAddress);

4. Índice Filtered (Filtrado)

Un índice filtrado cubre un subconjunto de filas basado en una condición de filtrado.

-- Crear un índice filtrado en la columna TerritoryID de Sales.SalesOrderHeader solo para filas


donde TerritoryID no es NULL

CREATE NONCLUSTERED INDEX IX_SalesOrderHeader_TerritoryID_Filtered

ON Sales.SalesOrderHeader (TerritoryID)

WHERE TerritoryID IS NOT NULL;


5. Índice Clustered Columnstore (Almacén de columnas clustered)

Este índice es ideal para cargas de trabajo de análisis, ya que almacena los datos en formato
de columnas y permite una compresión eficiente y rápidas consultas analíticas.

-- Crear un índice clustered columnstore en la tabla Sales.SalesOrderDetail

CREATE CLUSTERED COLUMNSTORE INDEX IX_SalesOrderDetail_ColumnStore

ON Sales.SalesOrderDetail;

6. Índice Nonclustered Columnstore (Almacén de columnas nonclustered)

Este tipo de índice combina los beneficios de almacenamiento de columnas en una


estructura no clustered, útil para consultas analíticas en tablas operacionales.

-- Crear un índice nonclustered columnstore en la tabla Sales.SalesOrderDetail

CREATE NONCLUSTERED COLUMNSTORE INDEX


IX_SalesOrderDetail_NonClusteredColumnStore

ON Sales.SalesOrderDetail (UnitPrice, OrderQty);

7. Índice Hash (solo para tablas con memoria optimizada)

El índice hash es utilizado en tablas con memoria optimizada (In-Memory OLTP) y asigna una
clave hash a las filas para búsquedas rápidas.

-- Crear una tabla con memoria optimizada y un índice hash en la columna BusinessEntityID

CREATE TABLE Person.Person_Hash (

BusinessEntityID int NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH


(BUCKET_COUNT = 10000),

FirstName nvarchar(50) NOT NULL,

LastName nvarchar(50) NOT NULL

) WITH (MEMORY_OPTIMIZED = ON);


8. Índice Memory-Optimized Nonclustered (Para tablas con memoria optimizada)

Un índice nonclustered optimizado para memoria permite búsquedas eficientes en tablas


con memoria optimizada, similar a los índices nonclustered tradicionales, pero ajustados
para entornos In-Memory.

-- Crear un índice nonclustered optimizado para memoria en la tabla Person.Person_Hash

CREATE NONCLUSTERED INDEX IX_Person_Hash_LastName

ON Person.Person_Hash (LastName);

Notas importantes:

• Clustered Index: Solo puede haber uno por tabla porque organiza físicamente los
datos.

• Nonclustered Index: Pueden haber varios índices nonclustered en una tabla. Son
útiles para mejorar el rendimiento de consultas que filtran datos por columnas
específicas.

• Unique Index: Asegura que los valores sean únicos en las columnas especificadas.

• Filtered Index: Muy eficiente para columnas que contienen muchos valores NULL o
cuando solo consultas específicas usan un subconjunto de datos.

• Columnstore Index: Se utilizan para optimizar cargas de trabajo analíticas, donde se


requiere la lectura rápida de grandes cantidades de datos.

• Hash Index: Exclusivo de tablas con memoria optimizada y es útil en situaciones


donde se necesita una búsqueda extremadamente rápida de filas.

• Memory-Optimized Nonclustered Index: También exclusivo para tablas In-Memory,


se usa para optimizar búsquedas en tablas con memoria optimizada.

Consideraciones:

• Antes de crear índices, es importante analizar el patrón de consultas y el uso de la


base de datos para determinar qué columnas son más frecuentes en consultas,
filtrados, uniones (JOIN) o agrupamientos (GROUP BY).

• Cada índice adicional puede mejorar el rendimiento de las consultas de lectura, pero
también puede agregar sobrecarga en las operaciones de escritura (inserciones,
actualizaciones, eliminaciones), por lo que se debe tener un balance adecuado.

También podría gustarte