Oops, forgot something:

Should look like:

select
  sum(i.QUANTITY),
  sum(i.QUANTITY * i.COSTPRICEEX)
from (select
    cast(:vStartDate as date) as vStartDate,
    cast(:vEndDate as date) as vEndDate,
    cast(:vSKU as bigint) as vSKU
  from RDB$DATABASE) p
join SALES s on s.SALE_DATE between p.vStartDate and p.vEndDate
join SALEITEMS i on s.LINECODE = i.LINECODE and i.SKU = p.vSKU
where
  s.POSTSTATUS = 'Posted' and
  s.CASHCREDIT = 'Cash'

Thomas

Am 11.04.2014 00:34, schrieb Thomas Beckmann:
> Hi Marius,
> 
> my first try would look like this:
> 
> select
>   sum(i.QUANTITY),
>   sum(i.QUANTITY * i.COSTP RICEEX)
> from (select
>     cast(:vStartDate as date) as vStartDate,
>     cast(:vEndDate as date) as vEndDate,
>     cast(:vSKU as bigint) as vSKU
>   from RDB$DATABASE) p
> join SALES s
> join SALEITEMS i on s.LINECODE = i.LINECODE and i.SKU = p.vSKU
> where
>   s.POSTSTATUS = 'Posted' and
>   s.CASHCREDIT = 'Cash' and
>   s.SALE_DATE between p.vStartDate and p.vEndDate
> 
> (while I don't know the proper type of vSKU)
> 
> Do you need an explanation?
> 
> Thomas
> 
> Am 11.04.2014 00:14, schrieb Marius Labuschagne:
>>  
>>
>> Hi,
>>
>>  
>>
>> Is it possible to optimize the following select query?
>>
>>  
>>
>> I make use of Firebird 2.5.2.26540 in Super Server mode.
>>
>>  
>>
>> The query looks like this:
>>
>>  
>>
>> SELECT
>>
>>   Sum(SALEITEMS.QUANTITY),
>>
>>   Sum(SALEITEMS.QUANTITY * SALEITEMS.COSTP RICEEX)
>>
>> FROM
>>
>>   SALES SALES
>>
>>   INNER JOIN SALEITEMS SALEITEMS ON SALES.LINECODE = SALEITEMS.LINECODE
>>
>> WHERE
>>
>>   SALES.POSTSTATUS = 'Posted' AND
>>
>>   SALES.SALE_DATE BETWEEN :vStartDate AND :vEndDate AND
>>
>>   SALEITEMS.SKU = :vSKU AND
>>
>>   SALES.CASHCREDIT = 'Cash'
>>
>>  
>>
>> The plan being utilized is as follow: PLAN JOIN (SA LEITEMS INDEX
>> (I_SALEITEMS_SKU), SALES INDEX (I_SALES_ULINECODE))
>>
>>  
>>
>> Would the result not be much faster if I can get this query to utilize
>> the index on the SALES table on the SALE_DATE field (which exists and is
>> active)?  Looking at the plan that is being utilised I get the feeling
>> that all records with the particular SKU (:vSKU) is first selected
>> (Detail table), and there can be millions of these, whereas only
>> hundreds or thousands of records would exist if the plan would first get
>> the subset of sales records based on the master table SALES, where the
>> SALE_DATE are between 2 dates?
>>
>>  
>>
>> The SALES and SALEITEMS tables has a 1:1M relationship, a typical Master
>> Detail relationship, with the LINECODE field bein g the link between the
>> two tables.
>>
>>  
>>
>> Any advise much appreciated.
>>
>>  
>>
>>  
>>
>>  
>>
>> Regards
>> Marius J. Labuschagne
>>
>>  
>>
>>
> 

-- 
Mit freundlichen Grüßen,

Thomas Beckmann
Diplom-Informatiker


Wielandstraße 14c • 23558 Lübeck
Tel +49 (22 25) 91 34 - 545 • Fax +49 (22 25) 91 34 - 604
Mail [email protected] <mailto:[email protected]>

ASSFINET-Logo

*ASSFINET Dienstleistungs-GmbH*
Max-Planck-Straße 14 • 53501 Grafschaft bei Bonn
[email protected] <mailto:[email protected]> • www.assfinet.de
<http://www.assfinet.de/>

Geschäftsführer: Dipl. Wirtschaftsinformatiker Marc Rindermann
Registergericht Koblenz HRB 23331

Diese E-Mail enthält vertrauliche Informationen. Wenn Sie nicht der
richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben,
informieren Sie bitte sofort den Absender und vernichten Sie diese Mail.
Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail ist
nicht gestattet.



------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Visit http://www.firebirdsql.org and click the Resources item
on the main (top) menu.  Try Knowledgebase and FAQ links !

Also search the knowledgebases at http://www.ibphoenix.com 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Yahoo Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/firebird-support/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/firebird-support/join
    (Yahoo! ID required)

<*> To change settings via email:
    [email protected] 
    [email protected]

<*> To unsubscribe from this group, send an email to:
    [email protected]

<*> Your use of Yahoo Groups is subject to:
    https://info.yahoo.com/legal/us/yahoo/utos/terms/

Reply via email to