sql >> Base de Datos >  >> RDS >> Database

Cambio de nombre de índices con procedimiento sp_rename

No hace mucho, estaba trabajando en un proyecto en el que necesitábamos cambiar el tipo de datos de una tabla. La tabla tenía millones de filas y decidimos crear una tabla separada utilizando la definición de tabla existente e insertar las filas en esa tabla. Después de exportar los datos a la nueva tabla, cambiamos el nombre de la tabla anterior, la restricción y los índices usando sp_rename procedimiento almacenado.

El artículo actual está dedicado a las formas de cambiar el nombre de los índices.

Los conceptos básicos del procedimiento almacenado sp_rename

Podemos renombrar el índice con uno de los siguientes métodos:

  1. Uso de SQL Server Management Studio.
  2. Uso de sp_rename procedimiento almacenado.

Primero, comprendamos los conceptos básicos.

El sp_rename El procedimiento se utiliza para cambiar el nombre de tablas, columnas de tablas, nombres de índices y tipos definidos por el usuario de Common Language Runtime.

La sintaxis del procedimiento es la siguiente:

Exec sp_rename 'nombre_objeto', 'nombre_nuevo', 'tipo_objeto'

  1. nombre_objeto especifica el nombre del objeto que desea cambiar de nombre.
    1. Si cambia el nombre de la tabla, el formato de object_name el parámetro puede ser [table_name] o [schema_name].[table_name] .
    2. Si cambia el nombre de la columna de la tabla, el formato del nombre_objeto el parámetro debe ser [table_name].[column_name].
    3. Si cambia el nombre del índice de la tabla, el formato del nombre_objeto el parámetro debe ser [schema_name].[table_name].[index_name] . O puede ser [table_name].[index_name] .

Nota: Si está utilizando un nombre de objeto calificado, debe especificar las comillas.

  1. nuevo_nombre especifica el nuevo nombre del objeto que debe ser el identificador de una parte.
  2. tipo_objeto especifica el tipo de objeto que desea cambiar de nombre (un parámetro opcional). El valor del tipo_objeto debe ser cualquiera de los siguientes:
    1. COLUMNA
    2. BASE DE DATOS
    3. ÍNDICE
    4. OBJETO
    5. ESTADÍSTICAS

Configuración de demostración

Para nuestra explicación y propósitos de prueba, he preparado una configuración de demostración. Existe la base de datos llamada StudentDB , donde he creado una tabla llamada tblStudent .

La consulta para crear la base de datos:

Create database [StudentDB]

La consulta para crear la tabla:

USE [StudentDB]
GO
CREATE TABLE [dbo].[tblStudents](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[student_name] [varchar](250) NOT NULL,
	[student_code] [varchar](5) NOT NULL,
	[student_grade] [char](2) NOT NULL,
	[SchoolID] [int] NOT NULL,
 CONSTRAINT [PK_tblStudent] PRIMARY KEY CLUSTERED([ID] ASC))

También he creado el índice llamado INDX_tblStudents_Std_Code en el tblStudent tabla:

USE [StudentDB]
GO
CREATE NONCLUSTERED INDEX [INDX_tblStudents_Std_Code] ON [dbo].[tblStudents]
([student_code] ASC)

La siguiente consulta inserta los datos en la tabla:

insert into [tblStudents]
(student_name,student_code,student_grade,SchoolID)
values
('Nisarg Upadhyay','ST001','A',1),
('Dixit Upadhyay','ST003','A',1),
('Bharti Upadhyay','ST004','C',2),
('Nimesh Patel','ST005','C',2),
('Raghav Dave','ST006','A',1)

Ahora, veamos cómo renombramos el PK_tblStudent índice utilizando SQL Server Management Studio.

Renombrar índices usando SSMS

Primero, cambiemos el nombre del PK_tblStudent índice.

  1. Inicie SQL Server Management Studio y conéctese al motor de la base de datos.
  2. Expandir StudentDB base de datos> Tablas > tblEstudiantes > Índices
  3. Haga clic derecho en PK_tblStudent índice> seleccione Renombrar desde el menú, o haga un solo clic en el nombre del índice.

El índice se vuelve editable. Especifique el nuevo nombre del índice y pulse Intro .

Antes de cambiar el nombre del índice, SSMS mostrará la siguiente advertencia. Haz clic en .

Se ha cambiado el nombre del índice y los cambios se aplican inmediatamente.

Si el nombre del índice no está actualizado, actualice los Índices carpeta:

Ejecute la siguiente consulta para verificar que se haya cambiado el nombre del índice:

select object_name(object_id) [table name],name [Index Name], type_desc [Index Type] from sys.indexes where object_id=object_id('tblStudents')

La salida :

Como puede ver, se cambió el nombre del índice y SSMS demostró ser eficiente para este propósito.

Ahora, comprendamos cómo podemos cambiar el nombre del índice usando sp_rename procedimiento almacenado.

Renombra índices usando el procedimiento almacenado sp_rename

Vamos a cambiar el nombre del índice a INDX_tblStudents_Std_Code a INDX_tblStudents_Student_Code .

Nuestro sp_rename procedimiento almacenado funcionará en el siguiente código:

exec sp_rename 'dbo.tblStudents.INDX_tblStudents_Std_Code','INDX_tblStudents_Student_Code'

Ejecute la consulta para verificar el cambio de nombre del índice:

select object_name(object_id) [table name],name [Index Name], type_desc [Index Type] from sys.indexes where object_id=object_id('tblStudents')

La salida:

Notas importantes

Seguridad y permisos

Para cambiar el nombre del índice, debe tener ALTER permiso en el índice.

Cómo cambian las estadísticas

Cuando renombramos el índice, las estadísticas asociadas con el índice se renombran automáticamente. Veamos las estadísticas asociadas con la clave principal.

Abra SQL Server Management Studio> Expanda la base de datos necesaria> tabla tblStudents> Estadísticas

Como puede ver, se ha cambiado el nombre de las estadísticas.

Cómo cambia el plan de ejecución de Query

Cuando cambiamos el nombre del índice, los metadatos del plan de ejecución de la consulta también se cambian automáticamente. Para que quede más claro, revisemos el plan de ejecución de la consulta utilizando el PK_tblStudent índice.

Ejecute la siguiente instrucción SELECT:

Select * from [tblStudents] where ID=’5’

La salida:

El nombre del índice se cambia en el plan de ejecución.

Resumen

Por lo tanto, hemos aprendido sobre el sp_rename sintaxis y uso del procedimiento almacenado. Además, hemos identificado y probado dos formas de cambiar el nombre de los índices en la tabla. Ahora podemos hacerlo tanto con SSMS como con el procedimiento almacenado dedicado. También aclaramos los impactos de cambiar los nombres de los índices en las estadísticas y los planes de ejecución de consultas. Además, la búsqueda y solución de problemas de fragmentación de índices se puede lograr con la ayuda de dbForge Index Manager. Espero que este artículo con sus consejos prácticos le resulte útil para su trabajo.

Artículos relacionados

Diferentes formas de cambiar el nombre de las tablas de SQL Server