Mejora consulta SQL
Publicado por Jorge Cartagena (4 intervenciones) el 05/10/2015 19:13:37
Buenos dias por favor que me ayuden como puedo mejorar los tiempos de consulta de esta sentencia SQL, muchas gracias por su ayuda.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
SELECT PRODU_STOCK.cod_sec AS CODSECCION,
SECCION.seccion AS SECCION,
(SELECT TABLA.des_tab FROM TABLA WHERE TABLA.cod_tab=PRODU.depto AND TABLA.NUM_TAB=02) AS DEPARTAMENTO,
PRODU_STOCK.cod_pro AS COD_PROD,
PRODU.producto AS DESCRIPCION,
PRODU.refer AS REFERENCIA,
(SELECT TABLA.des_tab FROM TABLA WHERE TABLA.cod_tab=PRODU.cate AND TABLA.NUM_TAB=01) AS CATEGORIA,
(SELECT TABLA.des_tab FROM TABLA WHERE TABLA.cod_tab=PRODU.lineaprod AND TABLA.NUM_TAB=13) AS LINEAPROD,
PRODU.coleccion AS COLECCION,
(SELECT TABLA.des_tab FROM TABLA WHERE TABLA.cod_tab=PRODU.lineafac AND TABLA.NUM_TAB=713) AS GENERO,
PRODU.precio_vta AS PRECIOVTA,
(PRODU_STOCK.stock
+ isnull((SELECT SUM(cantidad) FROM IVTRATRA WHERE IVTRATRA.origen = PRODU_STOCK.cod_sec
AND IVTRATRA.cod_pro=PRODU_STOCK.cod_pro
AND IVTRATRA.fec_mov BETWEEN " + s_desde + " AND " + s_hasta + "),0)
+ isnull((SELECT SUM(cantidad) FROM IVTRANOT WHERE IVTRANOT.cod_sec = PRODU_STOCK.cod_sec
AND IVTRANOT.cod_pro=PRODU_STOCK.cod_pro
AND IVTRANOT.fec_mov BETWEEN " + s_desde + " AND " + s_hasta + "),0)
- isnull((SELECT SUM(cantidad) FROM IVTRATRA WHERE IVTRATRA.destino = PRODU_STOCK.cod_sec
AND IVTRATRA.cod_pro=PRODU_STOCK.cod_pro
AND IVTRATRA.fec_mov BETWEEN " + s_desde + " AND " + s_hasta + "),0)
- isnull((SELECT SUM(cantidad) FROM IVTRACOM WHERE IVTRACOM.cod_sec = PRODU_STOCK.cod_sec
AND IVTRACOM.cod_pro=PRODU_STOCK.cod_pro
AND IVTRACOM.fec_mov BETWEEN " + s_desde + " AND " + s_hasta + "),0)) AS INVINICIAL,
(SELECT SUM(cantidad)
FROM IVTRACOM
WHERE IVTRACOM.cod_sec = PRODU_STOCK.cod_sec
AND IVTRACOM.cod_pro=PRODU_STOCK.cod_pro
AND IVTRACOM.fec_mov BETWEEN " + s_desde + " AND " + s_hasta + ") AS INGRESOSCOMPRA,
(SELECT SUM(cantidad)
FROM IVTRATRA
WHERE IVTRATRA.destino = PRODU_STOCK.cod_sec
AND IVTRATRA.cod_pro=PRODU_STOCK.cod_pro
AND IVTRATRA.fec_mov BETWEEN " + s_desde + " AND " + s_hasta + ") AS INGRESOSTRANSF,
(SELECT SUM(cantidad)
FROM IVTRANOT
WHERE IVTRANOT.cod_sec = PRODU_STOCK.cod_sec
AND IVTRANOT.cod_pro=PRODU_STOCK.cod_pro
AND IVTRANOT.fec_mov BETWEEN " + s_desde + " AND " + s_hasta + ") AS EGRESOSVENTA,
(SELECT SUM(cantidad)
FROM IVTRATRA
WHERE IVTRATRA.origen = PRODU_STOCK.cod_sec
AND IVTRATRA.cod_pro=PRODU_STOCK.cod_pro
AND IVTRATRA.fec_mov BETWEEN " + s_desde + " AND " + s_hasta + ") AS EGRESOSTRANSF,
PRODU_STOCK.stock AS INVFINAL,
(SELECT PRODU_STOCK.stock
FROM PRODU_STOCK
WHERE PRODU_STOCK.COD_PRO = PRODU.COD_PRO
AND PRODU_STOCK.COD_SEC='01')AS STOCKMATRIZ,
0 AS ROTACION
FROM PRODU_STOCK,
PRODU,
SECCION
WHERE PRODU_STOCK.cod_pro = PRODU.cod_pro
AND PRODU_STOCK.cod_sec=SECCION.cod_sec
AND PRODU_STOCK.cod_sec in(" + locales + ")
ORDER BY 1,2,3,4;
Valora esta pregunta


0