I'm trying to understand why a particular query is slow, and it seems like the optimizer is choosing a strange plan. See this summary:


* I have a large table, with an index on the primary key 'id' and on a field 'foo'.
select count(*) from foo;
1,000,000
select count(*) from foo where bar = 41;
7

* This query happens very quickly.
explain select * from foo where barId = 412 order by id desc;
Sort ()
  Sort key= id
 ->   Index scan using bar_index on foo ()
    Index cond: barId = 412

But this query takes forever

explain select * from foo where barId = 412 order by id desc limit 25;
Limit ()
 ->   Index scan backward using primarykey_index
  Filter:  barID = 412


Could anyone shed some light on what might be happening here?

 - Michael


-- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/

---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

Reply via email to