Bienvenido » SQL Server » Número máximo de índices en una tabla SQL Server
Abr
26

¿Cuál es el número máximo de índices que puede contener una tabla en SQL Server 2008?  255, 1000… Para salir de dudas puedes ejecutar este fragmento de sql que creará una tabla de prueba y empezará a crear índices hasta que salte el error.


CREATE TABLE tb_prueba
  (campo1 smallint,
   campo2 smallint,
   campo3 smallint,
   campo4 smallint);
GO

DECLARE @Contador INTEGER = 0
DECLARE @NumIndice VARCHAR(4)

WHILE 1=1
   BEGIN
     SET @Contador = @Contador + 1
     SET @NumIndice = CONVERT(VARCHAR(4),@contador)
     PRINT 'Crea indice nº ' + @NumIndice
     EXECUTE ('CREATE INDEX ix_indice_' + @NumIndice + ' ON tb_prueba (campo1,campo2,campo3,campo4)')
END

 

El resultado al ejecutar este fragmento de SQL es:

Crea indice nº 1
Crea indice nº 2
Crea indice nº 3
Crea indice nº 4

… tic tac tic tac …

Crea indice nº 249
Crea indice nº 250
Crea indice nº 251

… tic tac tic tac …

Crea indice nº 998
Crea indice nº 999
Crea indice nº 1000

Hasta que aquí salta el error:

Mens. 1910, Nivel 16, Estado 1, Línea 1
No se pudo crear índice no clúster ‘ix_indice_1000′ porque supera el máximo de 999 permitido por tabla o vista.

Vemos que el nº máximo de índices que se pueden crear son 999 del tipo “no clúster” es decir, sin ordenar físicamente, y además debemos sumar 1 índice de tipo “clúster” es decir ordenado físicamente.

Agregar Comentario