Optimizacion Indices,

04/11/2004 - 19:34 por Juan Barahona D. | Informe spam
Participantes: del foro realizo esta consulta para buscar la informacion de
meses anteriores
de un cliente, en la tabla lecturas_consumo (4.427.798 reg(s)) con INNER
Joins en la
tabla procesos (500) , lectores (120), en el momento en que empieza la
produccion de la empresa
(6 usuarios trabajando), esta query se demora alrededor de 1:05 minutos
tiempo no razonables
para lo que va avanzado de tecnologia. Pido porfavor alguna guia de como
manejar algun indices,
y/o optimizacion de la base en sí, o alguna experiencia pasada en este temas
de muchos registros.
Utilizo Sql 7.0, vbasic 6.0,.
Estuve leyendo algo en los BOL pero no encuentro algo un poco mas claro,
saludos JuanE, desde Chile!.



SELECT Procesos.grupo_proceso as proceso, lecturas_consumo.fecha_lectura+'
'+
lecturas_consumo.hora_ingreso as fecha_lectura ,
lecturas_consumo.medidor,lecturas_consumo.corr_medidor,lecturas_consumo.clav
e_lectura ,
lecturas_consumo.lectura,lectores.cod_lector,
lecturas_consumo.irreg_1 , lecturas_consumo.irreg_2,
lecturas_consumo.irreg_3, lecturas_consumo.irreg_4,
CASE WHEN lecturas_consumo.atendido=0 THEN 'Pendiente' WHEN
lecturas_consumo.atendido=1
THEN 'Efectivo' WHEN lecturas_consumo.atendido=2 THEN 'Improcedente'
END AS Estado From lecturas_consumo
INNER JOIN Procesos ON lecturas_consumo.id_grupoproceso Procesos.id_grupoproceso
full join [CHILECTRA].[dbo].[lectores] as lectores on
lecturas_consumo.id_lector=lectores.id_lector
WHERE lecturas_consumo.id_servicio 480
AND procesos.id_tipoproceso=1 AND procesos.sector
AND lecturas_consumo.sector ORDER by lecturas_consumo.id_lectura DESC





CREATE TABLE [dbo].[lecturas_consumo] (
[id_lectura] [int] IDENTITY (1, 1) NOT NULL ,
[id_servicio] [int] NOT NULL ,
[medidor] [int] NOT NULL ,
[corr_medidor] [nvarchar] (1) NOT NULL ,
[id_grupoproceso] [int] NOT NULL ,
[id_comuna] [int] NOT NULL ,
[id_lector] [int] NULL ,
[cod_lector] [nvarchar] (4) NULL ,
[id_zona] [int] NOT NULL ,
[sector] [int] NOT NULL ,
[libreta] [int] NOT NULL ,
[orden_ruta] [int] NOT NULL ,
[fecha_lectura] [smalldatetime] NOT NULL ,
[clave_lectura] [nvarchar] (2) NULL ,
[hora_ingreso] [nvarchar] (8) NULL ,
[tipo_medicion] [smallint] NOT NULL ,
[irreg_1] [nvarchar] (2) NULL ,
[irreg_2] [nvarchar] (2) NULL ,
[irreg_3] [nvarchar] (2) NULL ,
[irreg_4] [nvarchar] (2) NULL ,
[verif_lect] [smallint] NOT NULL ,
[num_folio] [nvarchar] (8) NULL ,
[lect_min] [int] NOT NULL ,
[lect_max] [int] NOT NULL ,
[cons_promedio] [numeric](18, 2) NOT NULL ,
[cliente_cerrado] [smallint] NOT NULL ,
[lectura] [nvarchar] (8) NULL ,
[estado] [smallint] NOT NULL ,
[atendido] [smallint] NOT NULL ,
[id_usuario] [int] NOT NULL
)
GO

CREATE CLUSTERED INDEX [indice_id_servicio] ON
[dbo].[lecturas_consumo]([id_servicio]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[lecturas_consumo] WITH NOCHECK ADD
CONSTRAINT [DF_lecturas_consumo_corr_medidor_1] DEFAULT (0) FOR
[corr_medidor],
CONSTRAINT [DF_lecturas_consumo_id_grupoproceso_1] DEFAULT (0) FOR
[id_grupoproceso],
CONSTRAINT [DF_lecturas_consumo_id_comuna_1] DEFAULT (0) FOR [id_comuna],
CONSTRAINT [DF_lecturas_consumo_id_lector_1] DEFAULT (0) FOR [id_lector],
CONSTRAINT [DF_lecturas_consumo_id_zona] DEFAULT (0) FOR [id_zona],
CONSTRAINT [DF_lecturas_consumo_sector] DEFAULT (0) FOR [sector],
CONSTRAINT [DF_lecturas_consumo_libreta] DEFAULT (0) FOR [libreta],
CONSTRAINT [DF_lecturas_consumo_orden_ruta] DEFAULT (0) FOR [orden_ruta],
CONSTRAINT [DF_lecturas_consumo_tipo_medicion] DEFAULT (0) FOR
[tipo_medicion],
CONSTRAINT [DF_lecturas_consumo_verif_lect_1] DEFAULT (0) FOR [verif_lect],
CONSTRAINT [DF_lecturas_consumo_num_folio] DEFAULT (0) FOR [num_folio],
CONSTRAINT [DF_lecturas_consumo_lect_min_1] DEFAULT (0) FOR [lect_min],
CONSTRAINT [DF_lecturas_consumo_lect_max_1] DEFAULT (0) FOR [lect_max],
CONSTRAINT [DF_lecturas_consumo_cons_promedio_1] DEFAULT (0) FOR
[cons_promedio],
CONSTRAINT [DF_lecturas_consumo_cliente_cerrado_1] DEFAULT (0) FOR
[cliente_cerrado],
CONSTRAINT [DF_lecturas_consumo_lectura_1] DEFAULT (0) FOR [lectura],
CONSTRAINT [DF_lecturas_consumo_estado_1] DEFAULT (0) FOR [estado],
CONSTRAINT [DF_lecturas_consumo_atendido_1] DEFAULT (0) FOR [atendido],
CONSTRAINT [DF_lecturas_consumo_id_usuario_1] DEFAULT (0) FOR [id_usuario],
CONSTRAINT [PK_lecturas_consumo_1] PRIMARY KEY NONCLUSTERED
(
[id_lectura]
) ON [PRIMARY]
GO



Juan Barahona D.
Analista de Sistemas
Departamento de Informática, ALCIA Ltda.
Fono: 247 44 22 Fax: 247 44 23
alcia_jbarahona@entelchile.net
 

Leer las respuestas

#1 Isaias
04/11/2004 - 22:43 | Informe spam
Algo muy sencillo, aunque se me ha criticado cada que lo posteo.

REVISTE las columnas que tiene despues del WHERE, invariablemente deberian
ser INDICE en su tabla(s).

Preguntas similares