Quitar índices

Cuando ya no necesite un índice, puede quitarlo de la base de datos y recuperar el espacio en disco que utiliza actualmente. De este modo, cualquier objeto de la base de datos puede utilizar este espacio recuperado. Eliminar un índice y quitar un índice son sinónimos.

No puede quitar un índice utilizado por una restricción PRIMARY KEY o UNIQUE, excepto si quita la restricción. La modificación del índice, por ejemplo para modificar el valor del factor de relleno que utiliza, puede consistir en quitar y volver a crear el índice utilizado por una restricción PRIMARY KEY o UNIQUE sin necesidad de quitar y volver a crear la restricción. Para obtener más información sobre la reconstrucción de índices, vea Reorganizar y volver a generar índices.

En lugar de quitar y volver a crear un índice, puede regenerarlo; esto también resulta útil para volver a crear un índice agrupado. El proceso de regeneración del índice puede omitir el requisito de ordenar los datos por las columnas del índice si ya están ordenados.

Los índices creados en vistas o en tablas, tanto permanentes como temporales, se eliminan automáticamente cuando se quita la tabla o la vista.

[!NOTA]

Puede quitar un índice si dispone del permiso ALTER en la tabla.

Índices agrupados

Cuando se quita un índice agrupado, las filas de datos almacenadas en el nivel hoja del índice se almacenan en una tabla sin ordenar (montón). La eliminación de un índice agrupado puede llevar algún tiempo porque, además de quitar el índice agrupado, deben volver a generarse los índices no agrupados de la tabla para reemplazar las claves de índice agrupado con punteros de fila en el montón. Al quitar todos los índices de una tabla, quite primero los índices no agrupados y después los agrupados. De esta forma, no es necesario volver a generar los índices. Para obtener más información sobre la relación entre índices agrupados y no agrupados, vea Estructuras de índices no agrupados.

Para quitar un índice agrupado en una operación de eliminación en línea es necesario espacio en disco temporal; también es necesario si se especifica una cláusula MOVE TO. Para obtener más información, vea Requisitos de espacio en disco para operaciones DDL de índice.

Cuando se quita el índice agrupado de una vista indizada, automáticamente se quitan todos los índices no agrupados y las estadísticas creadas de forma automática de la misma vista. Las estadísticas creadas manualmente no se quitan.

Utilizar la cláusula MOVE TO

Puede eliminar el índice agrupado y trasladar la tabla no ordenada resultante (montón) a otro grupo de archivos o esquema de partición en una única transacción especificando la opción MOVE TO. Esta opción tiene las siguientes restricciones:

  • No es válida para vistas indizadas ni índices no agrupados.

  • El esquema de partición o el grupo de archivos especificado deben existir previamente.

  • Si no se especifica MOVE TO, la tabla resultante se situará en el mismo esquema de partición o grupo de archivos definido para el índice agrupado.

Quitar índices agrupados en línea

Cuando quita un índice agrupado puede especificar la opción ONLINE. Si establece el valor ON, la transacción DROP INDEX no bloquea las consultas y las modificaciones en los datos subyacentes ni en los índices no agrupados asociados. Para obtener más información, vea Realizar operaciones de índices en línea.

Cuando el valor es ON, la opción ONLINE tiene las siguientes restricciones:

  • Sólo se puede quitar un índice cada vez.

  • No es válida en índices agrupados deshabilitados.

  • No es válida en un índice agrupado de una vista o en índices no agrupados de tablas o vistas.

  • No se puede quitar en línea un índice agrupado que contenga columnas text, ntext, image, varchar(max), nvarchar(max), varbinary(max) o xml en las filas de datos de nivel hoja.

Establecer la opción de índice MAXDOP

Puede invalidar la opción de configuración max degree of parallelism de sp_configure para la operación de eliminación de índice especificando la opción de índice MAXDOP. Para obtener más información, vea Configurar operaciones de índice en paralelo.

Índices de texto

No se puede quitar un índice especificado como clave de texto para la tabla. Vea las propiedades del índice para determinar si el índice es una clave de texto. Para obtener más información, vea INDEXPROPERTY (Transact-SQL).

Para quitar un índice

DROP INDEX (Transact-SQL)

Cómo eliminar un índice (SQL Server Management Studio)

Ejemplos

A. Quitar un índice

En el siguiente ejemplo se quita el índice IX_ProductVendor_VendorID de la tabla ProductVendor.

USE AdventureWorks;
GO
DROP INDEX IX_ProductVendor_VendorID 
    ON Purchasing.ProductVendor;
GO

B. Quitar un índice agrupado en modo ONLINE

En el siguiente ejemplo se quita un índice agrupado con la opción ONLINE establecida en ON. La tabla sin ordenar resultante (montón) se almacena en el mismo grupo de archivos donde está almacenado el índice.

USE AdventureWorks;
GO
DROP INDEX AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate 
    ON Production.BillOfMaterials WITH (ONLINE = ON, MAXDOP = 2);
GO

Vea también

Referencia