una tablas tabla relacionar por nonclustered indice index incluidas ejemplos ejemplo create crear creando consultar con columnas codigo clustered sql-server-2005 indexing alter

sql server 2005 - tablas - SQL Server: ¿cómo escribir una declaración de índice alter para agregar una columna al índice único?



indices con columnas incluidas sql server (2)

Tengo un índice UNIQUE, NON CLUSTERED en una tabla que actualmente usa 4 columnas para el índice.

Quiero crear un script alternativo que simplemente pueda agregar otra columna a este índice. El nuevo tipo de columna es varchar .

La base de datos es SQL Server 2005.

Gracias por adelantado.


No puede alterar un índice; todo lo que puede hacer es

  1. soltar el índice anterior ( DROP INDEX (indexname) ON (tablename) )
  2. vuelva a crear el nuevo índice con la columna adicional en él:

    CREATE UNIQUE NONCLUSTERED INDEX (indexname) ON dbo.YourTableName(columns to include)

La instrucción ALTER INDEX en SQL Server está disponible para alterar ciertas propiedades (propiedades de almacenamiento, etc.) de un índice existente, pero no permite cambios en las columnas que componen el índice.


Si la nueva columna que está agregando al índice está al final de la lista de columnas; en otras palabras, si la lista de columnas del índice anterior es un prefijo de la lista de columnas del índice nuevo, entonces las filas que están ordenadas por las columnas antiguas seguirán ordenándose según las nuevas columnas. En Sybase SQL Server y quizás versiones anteriores de Microsoft SQL Server, había una opción with sorted_data que le permitía declarar que las filas ya estaban ordenadas. Pero en MSSQL 2008 R2 parece no tener ningún efecto; la opción es aceptada pero ignorada en silencio. En cualquier caso, creo que la opción fue más útil con los índices agrupados.

Otros mencionados with drop_existing , que suena genial, pero solo para versiones más caras de MSSQL.