none
optimizar codigo de query RRS feed

  • Pregunta

  • saludos, tengo una query como esta, funciona bien pero tengo 3 subselect y no se como podría hacer para escribirla de algun forma mas optima ,se me ocurre el tema de crear temporales pero estoy trtando de evitar esa opcion

    Select Max(dtFechaActualizacion_DetDrv),biNumero_Drv From DetalleDerivacion Where cNumeroGenDoc In ( Select d.cNumeroGenDoc From ( Select COUNT(B.cNumeroGenDoc) As Count_cNumeroGenDoc, A.siCodMun As siCod, b.cNumeroGenDoc,

    A.biNumero_Tra From Tramite A Inner Join DetalleDerivacion B On A.siCod=B.siCod And A.cNumeroGenDoc_Tra=B.cNumeroGenDoc And A.TipTra In (23,233,555,78556) Where B.dtFechaRegDoC>DATEADD(day,-25,getdate()) Group by

    B.cNumeroGenDoc, A.siCod , A.biNumero_Tra Having COUNT(B.cNumeroGenDoc)>1 )D ) GROUP BY biNumero_Drv




    • Editado Augusto C viernes, 15 de septiembre de 2017 23:40
    viernes, 15 de septiembre de 2017 23:25

Todas las respuestas

  • Hola Augusto, yo probaría de utilizar INNER JOINS y en segunda opción no veo el problema de utilizar tablas temporales siempre y cuando la cantidad de registros sea extremadamente grande.


    Mariano K.

    • Propuesto como respuesta Jorge TurradoMVP sábado, 16 de septiembre de 2017 13:26
    • Votado como útil Augusto C sábado, 16 de septiembre de 2017 15:27
    sábado, 16 de septiembre de 2017 12:47
  • Hola Augusto, yo probaría de utilizar INNER JOINS y en segunda opción no veo el problema de utilizar tablas temporales siempre y cuando la cantidad de registros sea extremadamente grande.


    Mariano K.

    Hola Mariano , gracias por tu respuesta , como lo harías con join, el tema es que por temas de estandares y segun tengo entendido las buenas prácticas no debo poner tantas tablas derivadas pero no se de que otra forma poder plantearlo.
    sábado, 16 de septiembre de 2017 15:31
  • Primero 

    Tus tablas principales tienen indices?

    Tus tablas principales cuantos registros aprox tienen? 

    Cuantos registros de las en porcentaje muestras osea 10% de mi tabla principal  algo asi son datos valiosos para poder usar tablas temporales


    Pasa los puntos prro v:

    Hola, gracias por tu respuesta, la consulta puede traer hasta 8000 registros , y la tabla puede tener 50000 o mas registros pero lo que quiero es saber si se pude escribir esa query de otra forma sin el select de select
    sábado, 16 de septiembre de 2017 18:19
  • Hola, 

    ". Y si ya te respondieron hay otra forma que es usando INNER JOIN o LEFT JOIN"

    Si perfecto como sería el planteo con ello

    domingo, 17 de septiembre de 2017 21:16