Creació d’índexs agrupats i no agrupats a SQL Server



Proveu El Nostre Instrument Per Eliminar Problemes

En un SQL Server, existeixen dos tipus d'índexs; Índexs agrupats i no agrupats. Tant els índexs agrupats com els índexs no agrupats tenen la mateixa estructura física. A més, tots dos s’emmagatzemen a SQL Server com a estructura B-Tree.



Índex agrupat:

Una llista agrupada és un tipus particular d'índex que reordena l'emmagatzematge físic de registres a la taula. Dins de SQL Server, els índexs s’utilitzen per accelerar les operacions de bases de dades, cosa que comporta un alt rendiment. Per tant, la taula només pot tenir un índex agrupat, que normalment es fa a la clau principal. Els nodes fulls d’un índex agrupat contenen 'Pàgines de dades'. Una taula només pot contenir un índex agrupat.



Creem un índex agrupat per entendre millor. Primer de tot, hem de crear una base de dades.



Creació de bases de dades

Per tal de crear una base de dades. Feu clic amb el botó dret a sobre 'Bases de dades' a l’explorador d’objectes i seleccioneu 'Nova base de dades' opció. Escriviu el nom de la base de dades i feu clic a D'acord. La base de dades s'ha creat tal com es mostra a la figura següent.

Creació de taules mitjançant la vista de disseny

Ara crearem una taula anomenada 'Empleat' amb la clau principal mitjançant la vista de disseny. Podem veure a la imatge següent que hem assignat principalment al fitxer anomenat 'ID' i que no hem creat cap índex sobre la taula.



Creació d’una taula anomenada “Empleat” amb l’identificador com a clau principal

També podeu crear una taula executant el codi següent.

USAR [prova] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo]. [Empleat] ([ID] [int] IDENTITY (1,1) NOT NULL, [Dep_ID] [int] NULL, [Name] [ varchar] (200) NULL, [correu electrònic] [varchar] (250) NULL, [ciutat] [varchar] (250) NULL, [adreça] [varchar] (500) NULL, CONSTRAINT [Primary_Key_ID] CLAU PRIMÀRIA CLUSTER ([ID ] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] GO

La sortida serà la següent.

Creació d’una taula anomenada “Empleat” amb l’identificador com a clau principal

El codi anterior ha creat una taula anomenada 'Empleat' amb un camp d'identificació, un identificador únic com a clau principal. Ara en aquesta taula, es crearà automàticament un índex agrupat a l'ID de columna a causa de restriccions de clau primària. Si voleu veure tots els índexs d'una taula, executeu el procediment emmagatzemat 'Sp_helpindex'. Executeu el codi següent per veure tots els índexs d'una taula anomenada 'Empleat'. Aquest procediment d'emmagatzematge pren un nom de taula com a paràmetre d'entrada.

USE test EXECUTE sp_helpindex Empleat

La sortida serà la següent.

'Sp_helpindex' mostrarà tots els índexs a la taula dels empleats.

Una altra manera de veure els índexs de taula és anar a 'Taules' a l'explorador d'objectes. Seleccioneu la taula i gasteu-la. A la carpeta d'índexs, podeu veure tots els índexs rellevants per a la taula específica, tal com es mostra a la figura següent.

Visualització de tots els índexs a la taula

Com que es tracta de l'índex agrupat, l'ordre lògic i físic de l'índex serà el mateix. Això significa que si un registre té un identificador de 3, s'emmagatzemarà a la tercera fila de la taula. De la mateixa manera, si el cinquè registre té un identificador de 6, s'emmagatzemarà al 5thubicació de la taula. Per entendre l’ordenació dels registres, heu d’executar el següent script.

USAR [prova] GO SET IDENTITY_INSERT [dbo]. [Employee] ON INSERT [dbo]. [Employee] ([ID], [Dep_ID], [Name], [email], [city], [address]) VALORS ( 8, 6, N'Humbaerto Acevedo