Hola Grupo, ante todo gracias por su tiempo.
Tenemos un problema grave con un indice y un select, yo se que sin la base
de datos es dificil opinar algo, pero les comento por si a alguien le a
ocurrido algo parecido y me puede dar alguna luz:
El problema: Para un proceso se creo un indice (para otro proceso que no es
este), y el select que detallo mas abajo intenta usar ese indice y se
'muere', le borro el indice y dura como 13 segundos. Lo que quiero es
entender porque insiste en utilizar un indice que lo 'asesina'.
Base: Sqlserver 2000 con sp3
Tabla FA00: Encabezado de las facturas (como 300 mil lineas)
Tabla: FA01: Lineas que componen cada factura, con dos millones y medio de
registros
Indices de la FA01:
1: sPedido, sCodigo_Producto, sProductoCombo, bProductoCombo, cCantidad,
cPrecioNeto, sBodega
2: sCodigo_Producto, sPedido, cCantidad (** ESTE ES EL INDICE QUE CAUSA
EL PROBLEMA **)
Select que da el problema: Basicamente es un resumen por proveedor de las
ventas por mes y año
Select IN04.sProveedor,year(fa00.dFecha) as Anio,month(fa00.dFecha) as Mes,
sum ( Fa01.cCantidad * Fa01.cPrecioNeto * FA00.cDolar ) as VentaNeta
From FA00 ,FA01 ,IN04
Where ( (FA00.dFecha BETWEEN '02-01-2005'
AND '06-30-2005 11:59:29 pm'))
AND FA00.sFactura > ''
And FA00.sTipoFactura <> 'AN'
AND FA00.sPedido = FA01.sPedido
AND FA01.sCodigo_Producto = IN04.sCodigo_Producto
AND FA01.sProductoCombo = ''
Group by IN04.sProveedor,year(fa00.dFecha),Month(fa00.dFecha)
Si borro el segundo indice el select dura 13 segundos, y en el plan de
mantenimiento muestra que las filas estimadas son 2 millones y resto sobre
la FA01, Pero si existe el segundo indice, lo utiliza, le asigna un 0 % de
costo y dice que solo necesita barrer 38 filas y se muere.
Hemos probado lo siguiente:
1. Le actualizamos las estadisticas a la FA00 y FA01 y el problema siguio.
2. Pasamos la tabla a otro base de datos con una insercion masiva y el
problema siguio.
3. En una base de otro cliente, con los indices exactamente iguales
(logicamente con datos distintos) el problema NO ocurre.
Les agradecere mucho cualquier comentario
Saludos de Costa Rica
Jorge Morales
Leer las respuestas