Is there anyway to tell Postgres "Run these two queries, and union their results, but don't change the plan as to a UNION - just run them separately"? Something seems funny to me that running a UNION should be twice as slow as running the two queries one after the other.
On Sun, Jul 19, 2009 at 8:10 PM, Robert James <srobertja...@gmail.com>wrote: > UNION was better, but still 5 times as slow as either query done > individually. > set enable_seqscan=off didn't help at all - it was totally ignored > Is there anything else I can do? > > On Sun, Jul 19, 2009 at 7:47 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: > >> Robert James <srobertja...@gmail.com> writes: >> > Hi. I notice that when I do a WHERE x, Postgres uses an index, and when >> I >> > do WHERE y, it does so as well, but when I do WHERE x OR y, it >> > doesn't. >> >> It can use indexes for OR conditions, but not for arbitrary OR >> conditions... >> >> > select * from dict >> > where >> > word in (select substr('moon', 0, generate_series(3,length('moon')))) >> -- >> > this is my X above >> > OR word like 'moon%' -- this is my Y above >> >> ... and that one is pretty arbitrary. You might have some luck with >> using a UNION instead, viz >> >> select * from dict where X >> union all >> select * from dict where Y >> >> regards, tom lane >> > >