Subject | Re: [firebird-support] is there a way around the IN clause? |
---|---|
Author | Gary Benade |
Post date | 2004-09-09T08:54:40Z |
>Martijn ToniesPLAN SORT (JOIN (C INDEX (IDX_CUSTOMERS_BRANCHCODE),O INDEX
>select c.name, c.surname, c.telephone, c.lastorderdate, o.customerlink
> from customers c left join orders o on (o.customerlink = c.link
>and o.recdate > '01-jan-2004' and o.recdate < '01-feb-2004' and
>o.branchcode= 'SAN')
>where c.branchcode = 'SAN' and o.customerlink is null
> order by c.lastorderdate desc,1,2
(ORDERS_CUSTOMERLINK,ORDERS_RECDATE)))
That query executes in 46 seconds
> Daniel RailPLAN SORT ((C INDEX (IDX_CUSTOMERS_BRANCHCODE)))
> select c.name, c.surname, c.telephone, c.lastorderdate
> from customers c
> where not exists (select 1 from orders
> where customerlink = c.link
> and recdate > '01-jan-2004'
> and recdate < '01-feb-2004'
> and branchcode = 'SAN')
> and c.branchcode = 'SAN'
> order by c.lastorderdate desc,1,2
PLAN (ORDERS INDEX (ORDERS_CUSTOMERLINK,ORDERS_RECDATE))
This also takes 45 seconds?
>LucLuc, this is fast (0.3s) but it doesn't return any data? How does the NOT
>select
>c.name, c.surname, c.telephone, c.lastorderdate
>from customers c
>where NOT EXISTS (
> select customerlink from orders
> where
> recdate > '01-jan-2004' and
> recdate < '01-feb-2004' and
> branchcode = 'SAN'
>)
>and c.branchcode = 'SAN'
>order by
>c.lastorderdate desc,1,2
EXISTS clause work?
Martijn and Daniel, I think there may be an issue with PLAN chosen. I am
going to try some manual plans and see what happens if I cant figure out
Lucs idea
Thanks for the input
Gary