Uso de Include en Índices

Uso de Include en Índices no agrupados

El uso de include en los índices permite ampliar la funcionalidad de los índices no agrupados al incluir campos en la construcción del índice para lograr mejorar el rendimiento de las consultas.

Beneficios del uso de Include

  • Se pueden usar tipos de datos no permitidos en índices.
  • No son considerados como una columna mas en la cantidad de columnas del índice o en el tamaño del índice. La cantidad de columnas máxima en un índice es 32.
  • Recuerde que el tamaño máximo del índice es de 1,700 bytes.
  • Aumenta la efectividad de las consultas



Limitaciones

  • Se usan en sólo índices no agrupados
  • Se pueden usar todos los tipos de datos excepto text, ntext, and image
  • No se pueden eliminar las columnas incluidas con Include salvo que se elimine primero el índice.

Ejercicios
Usando la base de datos Northwind

use Northwind
go

1. Crear un índice para la tabla productos por la descripción, incluir los campos Unidad y Precio

Create index ProductosDescripcionIDXinUnidadPrecio on
Products (ProductName)
Include ([QuantityPerUnit],[UnitPrice])
go

2. Crear un índice para Empleados por LastName y FirstName,  incluir Title y Address

Create index EmpleadosCargoDireccionIDXi on  Employees (LastName, FirstName)
Include (Title , Address)
go

Las imágenes siguientes muestran las propiedades del índice, para ver estas propiedades despliegue el nodo índices en la tabla Employees, luego puede pulsar doble click en el índice que desea ver sus propiedades.

 

Ver los índices creados

Para visualizar los índices creados se puede filtrar de acuerdo al nombre.

select * from sys.indexes where name like ‘Empleados%’ or name like ‘Productos%’
go

3. Crear un índice para Clientes (Customers) para el campo ContactName, incluir Country, Region y City.  Asignar factor de relleno de 70 y dar consistencia si existe.

if not exists
(select * from sys.indexes where name = ‘ClientesContactoIDX’)
Begin
Create index ClientesContactoIDX
on Customers([ContactName])
include (Country, Region , City)
with fillfactor = 70
End
Else
Begin
Create index ClientesContactoIDX
on Customers([ContactName])
include (Country, Region , City)
with (fillfactor = 70, drop_existing = on)
End
go

Cambiar el nombre al índice

Para cambiar el nombre de un objeto en la base de datos se utiliza el procedimiento almacenado sp_rename, especìficamente para cambiar el nombre a un índice la sintaxis es como sigue

Execute sp_rename ‘Tabla.NombreIndiceOriginal’, ‘NuevoNombre’, ‘INDEX’
go

Ejercicios

1. Cambiar el nombre del índice ProductosDescripcionIDXinUnidadPrecio por ProductosNombreUnidadPrecioIDX

Execute sp_rename ‘Products.ProductosDescripcionIDXinUnidadPrecio’,
‘ProductosNombreUnidadPrecioIDX’, ‘Index’
go
— Resultado
Precaución: al cambiar cualquier parte del nombre de un objeto pueden dejar de ser scripts válidos y procedimientos almacenados.