Ver Mensaje Individual
  #5 (permalink)  
Antiguo 02/12/2008, 14:03
Avatar de Andres95
Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
Respuesta: Optimizar consulta SQL

Como comentario, Si utilizas Bulk insert puedes formatear directamente el archivo para que te lo cargue en una tabla con campos separados y no tener que hacer uso de substrings....

Por otro lado, no se si te serviria un cross join, el cual es un producto cartesiano entre dos tablas.

Asi se hace el producto cartesiano de los registros y se insertan todos aquellos que no hallan sido insertado antes...


Y con lo dicho quedaria algo como:

Código:
if (select count(1) from cencostos) > 0 
BEGIN
   INSERT CuentasCeco(Expr1, Expr2, Expr3, Expr4, Expr5)
   Select S.Expr1, S.Expr2, S.Expr3, S.Expr4, S.Expr5
   FROM  (SELECT DISTINCT 
          SUBSTRING(cs.cod_centro,1,7) + 
          SUBSTRING(
                  RTRIM(LTRIM(ISNULL(Cu.ACTNUMBR_1,''))) +
                  RTRIM(LTRIM(ISNULL(Cu.ACTNUMBR_2,''))) +
                  RTRIM(LTRIM(ISNULL(Cu.ACTNUMBR_3,''))) +
                  RTRIM(LTRIM(ISNULL(Cu.ACTNUMBR_4,''))) +
                  RTRIM(LTRIM(ISNULL(Cu.ACTNUMBR_5,''))) + 
                  RTRIM(LTRIM(ISNULL(Cu.ACTNUMBR_6,''))) +
                  RTRIM(LTRIM(ISNULL(Cu.ACTNUMBR_7,''))) +
                  RTRIM(LTRIM(ISNULL(Cu.ACTNUMBR_8,''))),8, 17) AS Expr1
         ,SUBSTRING(Cu.ACTDESCR,1,51)                           AS Expr2
         ,SUBSTRING(RTRIM(LTRIM(Cu.ACCTTYPE)),1,3)              AS Expr3
         ,SUBSTRING(cs.cod_centro,43,4)                         AS Expr4
         ,SUBSTRING(cs.cod_centro,1,7)                          AS Expr5
         FROM cencostos  cs
         CROSS JOIN 
              gl00100 Cu ) S
   Left outer join
        CuentasCeco c
   On S.Expr1  = c.Expr1
   Where c.Expr1 is null
END
Cuenta como te fue....

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.