Skip to Content
0
Nov 29, 2011 at 01:00 PM

optimising a query

25 Views

Hi experts

i have made the following query

SELECT 
T0.DOCSTATUS
,T0.DOCDATE
,T0.SERIES
,T2.DocEntry
, T2.ItemCode
, T2.Quantity
, T2.Price
, ISNULL(T2.DiscPrcnt, 0) AS DiscPrcnt
, T2.LineTotal 
FROM dbo.OINV T0
INNER JOIN dbo.OCRD T1 ON T1.CardCode = T0.CardCode 
INNER JOIN dbo.INV1 T2 ON T2.DocEntry = T0.DocEntry 
INNER JOIN dbo.OITM T3 ON T3.ItemCode = T2.ItemCode
WHERE 
((T0.DocStatus != 'C') OR ((T0.DocDate >= DATEADD(MM,-3,GETDATE()) AND T0.DocStatus = 'C'))) 
AND (T0.Series IN ('1000', '1002', '1003', '1006', '1280', '1281') AND T1.U_Web = 'Y' AND (T3.ItemCode >= '00000' AND T3.ItemCode<='99999') AND T3.U_categ NOT IN ('19', '20', '21'))

and i have realised that it tooks ages to give results for the line

*((T0.DocStatus != 'C') OR ((T0.DocDate >= DATEADD(MM,-3,GETDATE()) AND T0.DocStatus = 'C'))) *

do you have any idea why it happens?

thanks in advance for your time!