Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

[SOLUCIONADO] consulta que tarda demasiado

Estas en el tema de consulta que tarda demasiado en el foro de Bases de Datos General en Foros del Web. buenas noches amigos del foro tengo otro problema ahora con una consulta en postgresql, es que tengo que consultar el sueldo de los trabajadores de ...
  #1 (permalink)  
Antiguo 07/09/2016, 21:47
 
Fecha de Ingreso: junio-2013
Mensajes: 94
Antigüedad: 11 años, 5 meses
Puntos: 0
Pregunta consulta que tarda demasiado

buenas noches amigos del foro tengo otro problema ahora con una consulta en postgresql, es que tengo que consultar el sueldo de los trabajadores de lo que va de año dividido en el monto total de cada nomina, por ejemplo en la nomina del sueldo basico ha cobrado xxxx en la nomina vacacional ha cobrado xxxx y asi, son 8 nominas, y se consultan dos tablas una donde estan los montos y la otra donde estan los datos personales, y como en la base de datos hay demasiados registros entonces la consulta tarde casi 1 minuto en dar los montos totales juntos en una sola consulta, pero si se consulta por separado cada nomina tarda 5 o 6 segundos con cada consulta, y yo no soy muy experto en base de datos tal vez puedan ayudarme a mejorarlo porque tengo pocos conocimientos.

este es el codigo de la consulta:


Código SQL:
Ver original
  1. SELECT SUM(b.valsal) AS valsal2
  2.  
  3. FROM sno_personal a, sno_hsalida b
  4.  
  5. WHERE a.cedper LIKE 'xxxxxxx'  AND a.codper = b.codper AND b.codnom='0102' AND tipsal='A' AND b.codperi<'017'
  6.  
  7. UNION
  8.  
  9. SELECT SUM(b.valsal) AS valsal2
  10.  
  11. FROM sno_personal a, sno_hsalida b
  12.  
  13. WHERE a.cedper LIKE 'xxxxxxx'  AND a.codper = b.codper AND b.codnom='0728' AND tipsal='A' AND b.codperi<'017'
  14.  
  15. UNION
  16.  
  17. SELECT SUM(b.valsal) AS valsal2
  18.  
  19. FROM sno_personal a, sno_hsalida b
  20.  
  21. WHERE a.cedper LIKE 'xxxxxxx'  AND a.codper = b.codper AND b.codnom='0755' AND tipsal='A' AND b.codperi<'017'
  22.  
  23. UNION
  24.  
  25. SELECT SUM(b.valsal) AS valsal2
  26.  
  27. FROM sno_personal a, sno_hsalida b
  28.  
  29. WHERE a.cedper LIKE 'xxxxxxx'  AND a.codper = b.codper AND b.codnom='0761' AND tipsal='A' AND b.codperi<'017'
  30.  
  31. UNION
  32.  
  33. SELECT SUM(b.valsal) AS valsal2
  34.  
  35. FROM sno_personal a, sno_hsalida b
  36.  
  37. WHERE a.cedper LIKE 'xxxxxxx'  AND a.codper = b.codper AND b.codnom='0799' AND tipsal='A' AND b.codperi<'017'
  38.  
  39. UNION
  40.  
  41. SELECT SUM(b.valsal) AS valsal2
  42.  
  43. FROM sno_personal a, sno_hsalida b
  44.  
  45. WHERE a.cedper LIKE 'xxxxxxx'  AND a.codper = b.codper AND b.codnom='0829' AND tipsal='A' AND b.codperi<'017'
  46.  
  47. UNION
  48.  
  49. SELECT SUM(b.valsal) AS valsal2
  50.  
  51. FROM sno_personal a, sno_hsalida b
  52.  
  53. WHERE a.cedper LIKE 'xxxxxxx'  AND a.codper = b.codper AND b.codnom='0868' AND tipsal='A' AND b.codperi<'017'
  54.  
  55. UNION
  56.  
  57. SELECT SUM(b.valsal) AS valsal2
  58.  
  59. FROM sno_personal a, sno_hsalida b
  60.  
  61. WHERE a.cedper LIKE 'xxxxxxx'  AND a.codper = b.codper AND b.codnom='0883' AND tipsal='A' AND b.codperi<'017'

[/CODE]

A y el sistema esta hecho en php

Muchas gracias de antemano

Última edición por gnzsoloyo; 08/09/2016 a las 06:25
  #2 (permalink)  
Antiguo 08/09/2016, 06:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: consulta que tarda demasiado

Probemos esto:
Código SQL:
Ver original
  1. SELECT b.codnom , SUM(b.valsal) valsal2
  2. FROM sno_personal a INNER JOIN sno_hsalida b  ON a.codper = b.codper
  3. WHERE
  4.     a.cedper LIKE 'xxxxxxx'  
  5.     AND b.codnom IN('0102', '0728', '0755', '0761', '0799', '0829', '0868', '0883')
  6.     AND tipsal='A'
  7.     AND b.codperi<'017'
  8. GROUP BY b.codnom
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 08/09/2016, 07:37
 
Fecha de Ingreso: junio-2013
Mensajes: 94
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: consulta que tarda demasiado

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Probemos esto:
Código SQL:
Ver original
  1. SELECT b.codnom , SUM(b.valsal) valsal2
  2. FROM sno_personal a INNER JOIN sno_hsalida b  ON a.codper = b.codper
  3. WHERE
  4.     a.cedper LIKE 'xxxxxxx'  
  5.     AND b.codnom IN('0102', '0728', '0755', '0761', '0799', '0829', '0868', '0883')
  6.     AND tipsal='A'
  7.     AND b.codperi<'017'
  8. GROUP BY b.codnom
primero muchas gracias amigo "gnzsoloyo" eso rebajo el tiempo de consulta a 8 segundos, pero no con todos los registros, ocea como busco por numero de cedula entonces con unas tarda los 40 segundos y con otras solo 8 segundos, pero me imagino que ya no se puede agilizar mas,

y una ultima pregunta, en otra tabla esta la descripción de los codigos del campo "codnom" estan en una tabla llamda sno_nomina, contiene el codnom y el campo desnom que seria donde estan el nombre de cada codigo, seria posible agrergar el campo desnom para que en la tabla salgan los codigo, los nombres de esos codigos y el monto

algo asi
Código HTML:
ll codnom ll         desnom        ll      valsal2   ll
ll  0728     ll  nombre nomina   ll monto total ll
porque yo trate de relacionarlos pero con el metodo del union y no pude, y con este metodo que me dices tu menos consigo como hacer

muchas gracias de antemano
  #4 (permalink)  
Antiguo 08/09/2016, 19:06
 
Fecha de Ingreso: junio-2013
Mensajes: 94
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: consulta que tarda demasiado

Ya lo resolvi muchas gracias por la ayuda "gnzsoloyo"

Etiquetas: demasiado, sql, tabla, tarda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:46.