On Tue, Jul 20, 2010 at 5:14 PM, Pavel Ivanov <paiva...@gmail.com> wrote:
> > Are there reasons not to implement optimization in the first case? Except > > for this is not most requested one :) > > I guess because this case is highly specific and it's behavior should > depend on particular constants used. Put there for example Id >> 54 = > 1000 and now we should make optimizer guess right away that query will > never return any rows. > > Pavel, I thought about this a little more and I can see a little problem For example, if we have an abstract function F, that we can guarantee: - if a <=b F(a)<=F(b) - if a >=b F(a)>=F(b) we actually should perform a kind of range search, but less effective than general range search. General range search knows what are the limits so search only for them regardless of the rows to be found, but this query should find any value and after that move left while F() is true and move right while F() is true. On the other size this kind of search will have either the same effectiveness as a full scan (in worst case) or better. I suppose this limitation is also why the queries with complex left parts (even WHERE id + 1 =) also does not use optimizer (CMIIW) Max _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users