Haber si me he enterado: índice agrupado.

12/04/2005 - 11:59 por Víctor | Informe spam
Veamos si me he enterado sobre los índices agrupados.

Tengo la siguiente tabla (más o menos con 2500000 de registros); esta tabla
indica el estado de ocupación de un barco cada día:

CREATE TABLE [dbo].[ic_numaco] (
[nac_id] [int] IDENTITY (1, 1) NOT NULL ,
[nac_via_codi] [int] NOT NULL:
FK de la tabla de los viajes del barco.

[nac_codaco] [varchar] (3) NOT NULL:
indica la acomodación (puede haber hasta 4 diferentes).

[nac_numero] [smallint] NOT NULL:
el número de la acomodación (camarote 1, camarote 2, butaca 1, butaca 2,
...)

[nac_vacio] [tinyint] NOT NULL:
1: está vacio; 0: no está vacio.

[nac_libres] [smallint] NOT NULL:
Indica el número de plazas libres de la acomodación.

[nac_reservado] [tinyint] NOT NULL:
1: está reservada entera (un pasajero puede reservar para él solo una
camarote de 4 plazas); 0: no

[nac_carga] [tinyint] NOT NULL:
0: sólo se vende para pasaje; 1: sólo se vende para carga; 2: para los
dos.

[nac_orden] [tinyint] NOT NULL:
orden de las acomodaciones del barco para las reservas de carga (primero
se asignar´na las acomodaciones con orden 1, luego con orden 2..., pero
sólo en las reservas de carga).

) ON [PRIMARY]
GO

Tengo un índice agrupado con las columnas nac_via_codi (para agruparlas por
viaje), luego por nac_codaco, y por nac_id (ahora mismo creo que ésta
columna sobraría).

Resulta que al eliminar un registro de la tabla, ésto me dura unos 10
segundos: ¿puede ser por el índice agrupado?
 

Leer las respuestas

#1 Carlos Sacristán
12/04/2005 - 12:19 | Informe spam
¿Has probado a ver el plan de ejecución para saber lo que hace el motor
cuando le indicas que elimine un registro? ¿Cómo es la sentencia que le
lanzas? Tampoco indicas cuál es la PK de la tabla, y es probable que el
problema de rendimiento que tienes venga por ahí...




Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Víctor" escribió en el mensaje
news:
Veamos si me he enterado sobre los índices agrupados.

Tengo la siguiente tabla (más o menos con 2500000 de registros); esta


tabla
indica el estado de ocupación de un barco cada día:

CREATE TABLE [dbo].[ic_numaco] (
[nac_id] [int] IDENTITY (1, 1) NOT NULL ,
[nac_via_codi] [int] NOT NULL:
FK de la tabla de los viajes del barco.

[nac_codaco] [varchar] (3) NOT NULL:
indica la acomodación (puede haber hasta 4 diferentes).

[nac_numero] [smallint] NOT NULL:
el número de la acomodación (camarote 1, camarote 2, butaca 1, butaca


2,
...)

[nac_vacio] [tinyint] NOT NULL:
1: está vacio; 0: no está vacio.

[nac_libres] [smallint] NOT NULL:
Indica el número de plazas libres de la acomodación.

[nac_reservado] [tinyint] NOT NULL:
1: está reservada entera (un pasajero puede reservar para él solo una
camarote de 4 plazas); 0: no

[nac_carga] [tinyint] NOT NULL:
0: sólo se vende para pasaje; 1: sólo se vende para carga; 2: para los
dos.

[nac_orden] [tinyint] NOT NULL:
orden de las acomodaciones del barco para las reservas de carga


(primero
se asignar´na las acomodaciones con orden 1, luego con orden 2...,


pero
sólo en las reservas de carga).

) ON [PRIMARY]
GO

Tengo un índice agrupado con las columnas nac_via_codi (para agruparlas


por
viaje), luego por nac_codaco, y por nac_id (ahora mismo creo que ésta
columna sobraría).

Resulta que al eliminar un registro de la tabla, ésto me dura unos 10
segundos: ¿puede ser por el índice agrupado?


Preguntas similares