Ver Mensaje Individual
  #3  
Antiguo 12-11-2010
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
También puedes tratar de hacer el mismo select pero utilizando JOINs

Código SQL [-]
select c.ncentro, l.carticulo, l.ncod_albaran, l.ccod_serie,
l.ncod_orden,c.npuntoventa, c.ncliente, c.dfecha, 
l.ncantidad1, l.ncantidad2, l.ncantidadvalor, c.ntipoop
from cabalbcli c
left join linalbcli l
on c.ncod_albaran = l.ncod_albaran and c.ccod_serie = l.ccod_serie
/* linalbcli deberia tener un indice por ncod_albaran,ccod_serie */
left join articulos a
on l.carticulo = a.ccod_articulo
/* articulos deberia tener un indice por ccod_articulo */
left join artifabr af
on af.ccod_articulo=a.ccod_articulo
/* artifabr deberia tener un indice por ccod_articulo */
left join multipuntosventa m
on m.ncod_puntoventa=c.npuntoventa  
/* multipuntosventa deberia tener un indice por ncodpuntosventa */
where
 and c.lfacturable=0
 and c.ntipoop=2
 and (c.dfecha >= '10/01/10' and c.dfecha <= '10/31/10')
 and l.lenvase=0
 and l.ncantidadvalor < 0
 and (l.ctipolinea='V' or l.ctipolinea='P' or l.ctipolinea='R')
 and l.nenlacefab is null
 and af.ncod_fabricante = 1
 and af.lprincipal=1 m.ncod_fabricante=1
 and af.csureferencia is not null
 and m.nptovtaserv is null
 order by l.carticulo, l.ncod_orden, l.ccod_serie, l.ncod_albaran
 
/* por el where que utilizas :
   CABALBCLI deberia tener un indice por lfacturable, ntipoop, dfecha
*/

Notas:
He utilizado alias (cabalbcli c, por ejemplo) para que el sql sea más legible

Presta especial atención a los índices que te marco, pues son los que utilizará para tratar de unir una tabla con otra.

Dato que utilizas "and campo is null" entiendo que quieres que te aparezcan registros en los que la tabla asociada no tiene registros. Por eso he utilizado LEFT JOIN.
Responder Con Cita