johno <jan.suchal@xxxxxxxxx> writes: > On Tue, Jul 22, 2014 at 4:53 AM, Tom Lane <tgl@xxxxxxxxxxxxx> wrote: >> johno <jan.suchal@xxxxxxxxx> writes: >>> The obvious query is >>> SELECT * FROM register_uz_accounting_entities >>> WHERE effective_on > '2014-07-11' OR (effective_on = '2014-07-11' AND >>> id > 1459) >>> ORDER BY effective_on, id >>> LIMIT 100 >> A more readily optimizable query is >> SELECT * FROM register_uz_accounting_entities >> WHERE (effective_on, id) > ('2014-07-11'::date, 1459) >> ORDER BY effective_on, id >> LIMIT 100 > Yes, but that query has completely different semantics - I can't change > that. No, it doesn't. Read it again ... or read up on row comparisons, if you're unfamiliar with that notation. The above queries are exactly equivalent per spec. regards, tom lane