63 - Regenerar índices


Primer problema:
Un profesor guarda algunos datos de sus alumnos en una tabla llamada "alumnos".
1- Elimine la tabla si existe y créela con la siguiente estructura:
 if object_id('alumnos') is not null
  drop table alumnos;
 create table alumnos(
  legajo char(5) not null,
  documento char(8) not null,
  apellido varchar(30),
  nombre varchar(30),
  notafinal decimal(4,2)
 );

2- Cree un índice no agrupado para el campo "apellido".

3- Vea la información de los índices de "alumnos".

4- Modifíquelo agregando el campo "nombre".

5- Verifique que se modificó:
 exec sp_helpindex alumnos;

6- Establezca una restricción "unique" para el campo "documento".

7- Vea la información que muestra "sp_helpindex":
  exec sp_helpindex alumnos;

8- Intente modificar con "drop_existing" alguna característica del índice que se creó 
automáticamente al agregar la restricción "unique":
 create clustered index UQ_alumnos_documento
  on alumnos(documento)
  with drop_existing;
No se puede emplear "drop_existing" con índices creados a partir de una restricción.

9- Cree un índice no agrupado para el campo "legajo".

10- Muestre todos los índices:
 exec sp_helpindex alumnos;

11- Convierta el índice creado en el punto 9 a agrupado conservando las demás características.

12- Verifique que se modificó:
 exec sp_helpindex alumnos;

13- Intente convertir el índice "I_alumnos_legajo" a no agrupado:
 create nonclustered index I_alumnos_legajo
  on alumnos(legajo)
  with drop_existing;
No se puede convertir un índice agrupado en no agrupado.

14- Modifique el índice "I_alumnos_apellido" quitándole el campo "nombre".

15- Intente convertir el índice "I_alumnos_apellido" en agrupado:
 create clustered index I_alumnos_apellido
  on alumnos(apellido)
  with drop_existing;
No lo permite porque ya existe un índice agrupado.

16- Modifique el índice "I_alumnos_legajo" para que sea único y conserve todas las otras 
características.

17- Verifique la modificación:
 exec sp_helpindex alumnos;

18- Modifique nuevamente el índice "I_alumnos_legajo" para que no sea único y conserve las demás 
características.

19- Verifique la modificación:
 exec sp_helpindex alumnos;
Ver solución

 if object_id('alumnos') is not null
  drop table alumnos;
 create table alumnos(
  legajo char(5) not null,
  documento char(8) not null,
  apellido varchar(30),
  nombre varchar(30),
  notafinal decimal(4,2)
 );

 create nonclustered index I_alumnos_apellido
  on alumnos(apellido); 

 exec sp_helpindex alumnos;

 create nonclustered index I_alumnos_apellido
  on alumnos(apellido,nombre)
  with drop_existing;

 exec sp_helpindex alumnos;

 alter table alumnos
  add constraint UQ_alumnos_documento
  unique nonclustered (documento);

 exec sp_helpindex alumnos;

 create clustered index UQ_alumnos_documento
  on alumnos(documento)
  with drop_existing;

 create nonclustered index I_alumnos_legajo
  on alumnos(legajo); 

 exec sp_helpindex alumnos;

 create clustered index I_alumnos_legajo
  on alumnos(legajo)
  with drop_existing;

 exec sp_helpindex alumnos;

 create nonclustered index I_alumnos_legajo
  on alumnos(legajo)
  with drop_existing;

 create nonclustered index I_alumnos_apellido
  on alumnos(apellido)
  with drop_existing;

 create clustered index I_alumnos_apellido
  on alumnos(apellido)
  with drop_existing;

 create unique clustered index I_alumnos_legajo
  on alumnos(legajo)
  with drop_existing;

 exec sp_helpindex alumnos;

 create clustered index I_alumnos_legajo
  on alumnos(legajo)
  with drop_existing;

 exec sp_helpindex alumnos;



 

Retornar