Subject RE: [firebird-support] Not Exists cost
Author Leyne, Sean
> If B_TABLE.VALUE2 never contains 'X' and half of A_TABLE.VALUE1 are 'Y'
> what would be the cost of executing this statement? A_TABLE.VALUE1 is
> indexed and B_TABLE.VALUE2 does not have an index.
>
> Would it be half of A_TABLE rows times all of B_TABLE rows? Or would the
> Not Exists statement be evaluated for every row in A_TABLE making it
> A_TABLE rows times B_TABLE rows?
>
> SELECT *
> FROM A_TABLE at
> WHERE
> at.VALUE1 = 'Y' AND
> NOT EXISTS (
> SELECT 1
> FROM B_TABLE bt
> WHERE bt.VALUE2 = 'X');

The query PLAN would tell you for certain, but I would expect the answer to be:
half of A_TABLE rows times all of B_TABLE rows.


Sean