Re: Horribly slow query/ sequential scan

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"Gregory S. Williamson" <gsw@xxxxxxxxxxxxxxxx> writes:
> As Joe indicated, there is indeed an Informix explain, appended below my signature ... 

> select
> w.appid,w.rate,w.is_subscribed,sum(w.hits) AS Hits ,sum(w.sius) AS IUs,
> sum(w.total_amnt) AS Total,sum(w.hits) * w.rate AS ByHits,
> sum(w.sius) * w.rate AS BYIUS
> from bill_rpt_work w, billing_reports b
> where w.report_id in
> (select b.report_id from billing_reports where b.report_s_date = '2006-09-30')
> and (w.client_id = '227400001' or w.client_id = '2274000010')
> group by 1,2,3
> order by 1,2,3

> Estimated Cost: 3149
> Estimated # of Rows Returned: 1
> Temporary Files Required For: Order By  Group By

>   1) informix.b: INDEX PATH

>     (1) Index Keys: report_s_date   (Serial, fragments: ALL)
>         Lower Index Filter: informix.b.report_s_date = datetime(2006-09-30) year to day 

>   2) informix.w: INDEX PATH

>         Filters: (informix.w.client_id = '227400001' OR informix.w.client_id = '2274000010' ) 

>     (1) Index Keys: report_id   (Serial, fragments: ALL)
>         Lower Index Filter: informix.w.report_id = informix.b.report_id 
> NESTED LOOP JOIN

>   3) informix.billing_reports: SEQUENTIAL SCAN  (First Row)
> NESTED LOOP JOIN  (Semi Join)

Interesting!  "Semi join" is the two-dollar technical term for what our
code calls an "IN join", viz a join that returns at most one copy of a
left-hand row even when there's more than one right-hand join candidate
for it.  So I think there's not any execution mechanism here that we
don't have.  What seems to be happening is that Informix is willing to
flatten the sub-SELECT into an IN join even though the sub-SELECT is
correlated to the outer query (that is, it contains outer references).
I'm not sure whether we're just being paranoid by not doing that, or
whether there are special conditions to check before allowing it, or
whether Informix is wrong ...

			regards, tom lane


[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux