Subject Re: SubSelect problems
Author jasajona
> There is no evidence that it could be. Thousands of people are using
> v.1.5.2 without this problem. That said, a certain optimization
I tryed this query on windows 1.5.1 results are the same. How server
is making decision what execution plan to use? Maybe sometimes it is
selecting different execution plan?

Anyway I will try to reproduce these conditions taht is making this
query work that slow. I understand that it is allmost imposible to say
something without it. So this is my query, I will post more
information lately.

Select
IJ1.ITJUDEJIMOID as PAGRID,
(IJ1.PRADINISNUSIDEVEJIMAS+IJ1.PRADINIONUSIDEVEJIMOPOKYTIS) as
NUSIDEVEJIMASORGAN,
(IJ1.PRADINISNUSIDEVEJIMASMOKEST+IJ1.PRADINIONUSIDEVEJIMOPOKYTIS)
as NUSIDEVEJIMASMOKES,

(IJ1.PRADINISNUSIDEVEJIMASLAISVAS+IJ1.PRADINIONUSIDEVEJIMOPOKYTIS) as
NUSIDEVEJIMASLAISVAS,
(IJ1.LIKVIDACINEVERTE+IJ1.LIKVIDACINESVERTESPOKYTIS) as
BENDRALIKVVERTE,
(IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS) as BENDRAVERTE,

IJ1.PRADINEVERTE,IJ1.PRADINESVERTESPOKYTIS,IJ1.LIKVIDACINEVERTE,IJ1.LIKVIDACINESVERTESPOKYTIS,
IJ1.LIKVIDAVIMODATA,
(IJ1.RIDA+IJ1.MENESINERIDA) as RIDAUZMENESI,
/* likvidavimo verte */
case
when (IJ1.LIKVIDAVIMOPROCENTAS>0) then
(
cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS) as
double precision)
-
(
cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS) as
double precision)
*cast(IJ1.LIKVIDAVIMOPROCENTAS as double precision)
/100
)
)
else
(IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS-IJ1.LIKVIDACINEVERTE-IJ1.LIKVIDACINESVERTESPOKYTIS)
end

as MaxNusidevejimas,

/* amort.suma pagal organizacijos norma */

case /* 2004 12 13 - organ*/
when (IJ1.ORGANIZACIJOSAMORTIZACIJOSNORMA>0) then

case /**** stovis ****/
WHEN (IJ1.stovis=1) THEN /**** eksploatacija ****/
case /**** skaiciavimo metodas ****/
when (IJ1.SKAICIAVIMOMETODAS=1) then /**** tiesiogia ****/

case :parametras /* 2004 12 14 kaip uzduota norma */
when 0 then /* 2004 12 14 norma %*/

case /**** 1 ****/
when (IJ1.LIKVIDAVIMOPROCENTAS>0) then

(
(
cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS) as
double precision)
-
(
cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS)
as double precision)
*cast(IJ1.LIKVIDAVIMOPROCENTAS as double precision)
/100
)
)
*cast(IJ1.ORGANIZACIJOSAMORTIZACIJOSNORMA as double
precision)
/1200
)
else
(

cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS-IJ1.LIKVIDACINEVERTE-IJ1.LIKVIDACINESVERTESPOKYTIS)
as double precision)
*cast(IJ1.ORGANIZACIJOSAMORTIZACIJOSNORMA as double
precision)
/1200
)

end /**** 1 ****/
else /* 2004 12 14 norma metai*/
case /**** A1 ****/
when (IJ1.LIKVIDAVIMOPROCENTAS>0) then
(
(
cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS) as
double precision)
-
(
cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS)
as double precision)
*cast(IJ1.LIKVIDAVIMOPROCENTAS as double precision)
/100
)
)
/(
cast
((Floor(IJ1.ORGANIZACIJOSAMORTIZACIJOSNORMA)*12) as double precision)
/* metai dauginam is 12 menesiu */
+
cast (
(
cast (

(IJ1.ORGANIZACIJOSAMORTIZACIJOSNORMA-Floor(IJ1.ORGANIZACIJOSAMORTIZACIJOSNORMA))
as double precision)
*100
)
as double precision)
)

)
else
(

cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS-IJ1.LIKVIDACINEVERTE-IJ1.LIKVIDACINESVERTESPOKYTIS)
as double precision)
/(
cast
((Floor(IJ1.ORGANIZACIJOSAMORTIZACIJOSNORMA)*12) as double precision)
/* metai dauginam is 12 menesiu */
+
cast (
(
cast (

(IJ1.ORGANIZACIJOSAMORTIZACIJOSNORMA-Floor(IJ1.ORGANIZACIJOSAMORTIZACIJOSNORMA))
as double precision)
*100
)
as double precision)
)

)

end /**** A1 ****/
end /* 2004 12 14 kaip uzduota norma */

when (IJ1.SKAICIAVIMOMETODAS=2) then 0 /**** dvigubas ****/
end /**** skaiciavimo metodas ****/
ELSE 0 /**** uzkonservuotas ****/
END /**** stovis ****/
Else 0 /* 2004 12 13 - organ*/
end /* 2004 12 13 - organ */


as AmortizacijosSumaOrganiz,

/* amort.suma pagal mokesciu norma */
case /* 2004 12 13 - mok*/
when (IJ1.MOKESTINEAMORTIZACIJOSNORMA>0) then

case /**** stovis ****/
WHEN (IJ1.stovis=1) THEN /**** eksploatacija ****/
case /**** skaiciavimo metodas ****/
when (IJ1.SKAICIAVIMOMETODAS=1) then /**** tiesiogia ****/

case :parametras /* 2004 12 14 kaip uzduota norma */
when 0 then /* 2004 12 14 norma %*/

case /* 12 */
when (IJ1.LIKVIDAVIMOPROCENTAS>0) then
(
(
cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS) as
double precision)
-
(
cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS)
as double precision)
*cast(IJ1.LIKVIDAVIMOPROCENTAS as double precision)
/100
)
)
*cast(IJ1.MOKESTINEAMORTIZACIJOSNORMA as double precision)
/1200
)
else
(

cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS-IJ1.LIKVIDACINEVERTE-IJ1.LIKVIDACINESVERTESPOKYTIS)
as double precision)
*cast(IJ1.MOKESTINEAMORTIZACIJOSNORMA as double precision)
/1200
)

end /* 12 */
else /* 2004 12 14 norma metai*/
case /**** B1 ****/
when (IJ1.LIKVIDAVIMOPROCENTAS>0) then
(
(
cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS) as
double precision)
-
(
cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS)
as double precision)
*cast(IJ1.LIKVIDAVIMOPROCENTAS as double precision)
/100
)
)
/(
cast ((Floor(IJ1.MOKESTINEAMORTIZACIJOSNORMA)*12)
as double precision) /* metai dauginam is 12 menesiu */
+
cast (
(
cast (

(IJ1.MOKESTINEAMORTIZACIJOSNORMA-Floor(IJ1.MOKESTINEAMORTIZACIJOSNORMA))
as double precision)
*100
)
as double precision)
)

)
else
(

cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS-IJ1.LIKVIDACINEVERTE-IJ1.LIKVIDACINESVERTESPOKYTIS)
as double precision)
/(
cast ((Floor(IJ1.MOKESTINEAMORTIZACIJOSNORMA)*12)
as double precision) /* metai dauginam is 12 menesiu */
+
cast (
(
cast (

(IJ1.MOKESTINEAMORTIZACIJOSNORMA-Floor(IJ1.MOKESTINEAMORTIZACIJOSNORMA))
as double precision)
*100
)
as double precision)
)

)

end /**** B1 ****/
end /* 2004 12 14 kaip uzduota norma */

when (IJ1.SKAICIAVIMOMETODAS=2) then 0 /**** dvigubas ****/
end /**** skaiciavimo metodas ****/
ELSE 0 /**** uzkonservuotas ****/
END /**** stovis ****/
Else 0 /* 2004 12 13 - mok*/
end /* 2004 12 13 - mok */

as AmortizacijosSumaMokestine,

/* amort.suma pagal laisva norma */
case /* 2004 12 13 - laisva*/
when (IJ1.LAISVAAMORTIZACIJOSNORMA>0) then

case /**** stovis ****/
WHEN (IJ1.stovis=1) THEN /**** eksploatacija ****/
case /**** skaiciavimo metodas ****/
when (IJ1.SKAICIAVIMOMETODAS=1) then /**** tiesiogia ****/

case :parametras /* 2004 12 14 kaip uzduota norma */
when 0 then /* 2004 12 14 norma %*/

case /* 13 */
when (IJ1.LIKVIDAVIMOPROCENTAS>0) then
(
(
cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS) as
double precision)
-
(
cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS)
as double precision)
*cast(IJ1.LIKVIDAVIMOPROCENTAS as double precision)
/100
)
) *cast(IJ1.LAISVAAMORTIZACIJOSNORMA as
double precision)
/1200
)
else
(

cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS-IJ1.LIKVIDACINEVERTE-IJ1.LIKVIDACINESVERTESPOKYTIS)
as double precision)
*cast(IJ1.LAISVAAMORTIZACIJOSNORMA as double precision)
/1200
)
end /* 13 */

else /* 2004 12 14 norma metai*/
case /**** C1 ****/
when (IJ1.LIKVIDAVIMOPROCENTAS>0) then
(
(
cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS) as
double precision)
-
(
cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS)
as double precision)
*cast(IJ1.LIKVIDAVIMOPROCENTAS as double precision)
/100
)
)
/(
cast ((Floor(IJ1.LAISVAAMORTIZACIJOSNORMA)*12) as
double precision) /* metai dauginam is 12 menesiu */
+
cast (
(
cast (

(IJ1.LAISVAAMORTIZACIJOSNORMA-Floor(IJ1.LAISVAAMORTIZACIJOSNORMA))
as double precision)
*100
)
as double precision)
)

)
else
(

cast((IJ1.PRADINEVERTE+IJ1.PRADINESVERTESPOKYTIS-IJ1.LIKVIDACINEVERTE-IJ1.LIKVIDACINESVERTESPOKYTIS)
as double precision)
/(
cast ((Floor(IJ1.LAISVAAMORTIZACIJOSNORMA)*12) as
double precision) /* metai dauginam is 12 menesiu */
+
cast (
(
cast (

(IJ1.LAISVAAMORTIZACIJOSNORMA-Floor(IJ1.LAISVAAMORTIZACIJOSNORMA))
as double precision)
*100
)
as double precision)
)

)

end /**** C1 ****/
end /* 2004 12 14 kaip uzduota norma */


when (IJ1.SKAICIAVIMOMETODAS=2) then 0 /**** dvigubas ****/
end /**** skaiciavimo metodas ****/
ELSE 0 /**** uzkonservuotas ****/
END /**** stovis ****/
Else 0 /* 2004 12 13 - laisva*/
end /* 2004 12 13 - laisva */

as AmortizacijosSumaLaisva,
DD.PADALINIOID,
DD.MATERIALIAIATSAGENTOID,
IT.INVENTORINIONRID,

COALESCE (
( Select First 1 itnusidevejimas.organizacijosnusidevsumaisviso
from itnusidevejimas
join ilgalaikisturtas IT3
on itnusidevejimas.itnusidevejimoid=IT3.itnusidevejimoid
join dokumentudetalizacijos DD3
on IT3.dokumentodetalizacijosid=DD3.dokumentodetalizacijosid
left join dokumentuantrastes DA3
on DA3.dokumentoantrastesid=DD3.dokumentoantrastesid
where
/* (IT3.inventorinionrid=IT.inventorinionrid) */
(itnusidevejimas.itjudejimoid=IJ1.itjudejimoid)
/* and (Upper(DA3.buhtvirtinimopozymis)='T') */
and (DA3.dokumentodata<=:datadokum)
order by DA3.dokumentodata desc)
,null)
as organizacijosnusidevsumaisviso,
COALESCE (
( Select First 1 itnusidevejimas.mokestinenusidevsumaisviso
from itnusidevejimas
join ilgalaikisturtas IT3
on itnusidevejimas.itnusidevejimoid=IT3.itnusidevejimoid
join dokumentudetalizacijos DD3
on IT3.dokumentodetalizacijosid=DD3.dokumentodetalizacijosid
left join dokumentuantrastes DA3
on DA3.dokumentoantrastesid=DD3.dokumentoantrastesid
where
/* (IT3.inventorinionrid=IT.inventorinionrid) */
(itnusidevejimas.itjudejimoid=IJ1.itjudejimoid)
/* and (Upper(DA3.buhtvirtinimopozymis)='T') */
and (DA3.dokumentodata<=:datadokum)
order by DA3.dokumentodata desc)
,null)
as mokestinenusidevsumaisviso,
COALESCE (
( Select First 1 itnusidevejimas.laisvonusidevsumaisviso
from itnusidevejimas
join ilgalaikisturtas IT3
on itnusidevejimas.itnusidevejimoid=IT3.itnusidevejimoid
join dokumentudetalizacijos DD3
on IT3.dokumentodetalizacijosid=DD3.dokumentodetalizacijosid
left join dokumentuantrastes DA3
on DA3.dokumentoantrastesid=DD3.dokumentoantrastesid
where
/* (IT3.inventorinionrid=IT.inventorinionrid) */
(itnusidevejimas.itjudejimoid=IJ1.itjudejimoid)
/* and (Upper(DA3.buhtvirtinimopozymis)='T') */
and (DA3.dokumentodata<=:datadokum)
order by DA3.dokumentodata desc)
,null)
as laisvonusidevsumaisviso,
IJ1.PRADINIONUSIDEVEJIMOPOKYTIS

from itjudejimai IJ1
join ilgalaikisturtas IT
on IT.itjudejimoid=IJ1.itjudejimoid
left join dokumentudetalizacijos DD
on DD.dokumentodetalizacijosid=IT.dokumentodetalizacijosid
left join dokumentudetalizacijurysiai DR
on (DD.dokumentodetalizacijosid=DR.tevinisid) and (DR.prasme>0)
/* */
left join dokumentudetalizacijos DDV
on DDV.dokumentodetalizacijosid=DR.vaikinisid
left join dokumentuantrastes DAV
on DAV.dokumentoantrastesid=DDV.dokumentoantrastesid
/* */
left join dokumentuantrastes DA
on DA.dokumentoantrastesid=DD.dokumentoantrastesid

WHERE

(
((DA.dokumentodata<:data) and (DAV.dokumentodata>=:data) )
or
((DA.dokumentodata<:data) and (DAV.dokumentodata is null) )
)

and (DA.GrieztoTipoKodas>=89 and DA.GrieztoTipoKodas<99 and
DA.GrieztoTipoKodas<>95)
and ((DA.buhtvirtinimopozymis = 'T') or (DA.prektvirtinimopozymis = 'T'))
and (IJ1.EKSPLOTACIJOSPRADZIA<:data)
and ((IJ1.LIKVIDAVIMODATA is null) or (IJ1.LIKVIDAVIMODATA<=:data1))
and (IJ1.SKAICIAVIMOMETODAS<>3)