SQL - Optimizar función

 
Vista:

Optimizar función

Publicado por Angel (2 intervenciones) el 20/11/2008 13:09:22
Buenas a todos, estoy empezando a optimizar funciones sql que acceden a tablas con millones de registros y la verdad es que me está costando bastante. Una de ellas es la siguiente:
SELECT sum(CUERPO_PEDIDO_CLIENTE.Dpc_Cantidad)
INTO lv_cajas
FROM cabecera_pedido_cliente, cuerpo_pedido_cliente
WHERE
cabecera_pedido_cliente.cpm_empresa = cuerpo_pedido_cliente.dpc_empresa and
cabecera_pedido_cliente.cpm_contabilidad = cuerpo_pedido_cliente.dpc_contabilidad and
cabecera_pedido_cliente.cpm_cliente = cuerpo_pedido_cliente.dpc_cliente and
cabecera_pedido_cliente.cpm_numero_pedido = cuerpo_pedido_cliente.dpc_numero_pedido and
cabecera_pedido_cliente.cpm_numero_bis = cuerpo_pedido_cliente.dpc_numero_bis and
((cuerpo_pedido_cliente.dpc_estado_pedido >=6 and cabecera_pedido_cliente.cpm_pedido_cargo_abono = 'P') or
(cabecera_pedido_cliente.cpm_pedido_cargo_abono <> 'P'))and
( cuerpo_pedido_cliente.dpc_ubicacion = AS_UBICACION OR AS_UBICACION IS NULL) and
(cuerpo_pedido_cliente.dpc_articulo = AS_ARTICULO or AS_ARTICULO IS NULL) and
( cabecera_pedido_cliente.cpm_cliente = AN_CLIENTE or AN_CLIENTE IS NULL) and
( cabecera_pedido_cliente.cpm_sucursal_envio = AN_SUCURSAL or AN_SUCURSAL IS NULL) and
cabecera_pedido_cliente.cpm_empresa = AN_EMPRESA and
cuerpo_pedido_cliente.dpc_almacen = AS_ALMACEN and
cabecera_pedido_cliente.cpm_contabilidad = 0 and
TRUNC(cuerpo_pedido_cliente.dpc_fecha_albaran) >= ad_fechaini and
TRUNC(cuerpo_pedido_cliente.dpc_fecha_albaran) <= ad_fechafin;

Alguna sugerencia?

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Optimizar función

Publicado por Angel (2 intervenciones) el 21/11/2008 09:43:50
Buenas el problema que he localizado es que si uso cuerpo_pedido_cliente.dpc_ubicacion = AS_UBICACION OR AS_UBICACION IS NULL la función va lenta porque hace un Full access a la tabla. En cambio si quito la comprobación de Null y dejo solo con la comparación la tabla se recorre por índice y la consulta va rápida.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar