Martijn van Oosterhout <kleptog@svana.org> writes: > On Fri, Jun 23, 2006 at 03:57:19PM +0300, Tzahi Fadida wrote: >> (SELECT * FROM R >> WHERE a=3, b=6,. ...) >> UNION >> (SELECT * FROM R >> WHERE b=5, d=2,. ...) >> UNION >> .... >> And lots of unions.
> Do you need UNION, or do you actually mean UNION ALL? > Also, couldn't you just do: > SELECT * FROM R > WHERE (a=3, b=6, ...) > OR (b=5, d=2, ...) > etc That seems to be what Tzahi wants the system to do for him. But the OR format is not in general logically equivalent to either UNION or UNION ALL, because UNION would cause duplicate output rows to be suppressed whereas UNION ALL could allow the same table row to be emitted multiple times (if two different WHERE conditions could select the same row). It's conceivable that the planner could prove that neither effect is possible in a particular query and then make the transformation automatically, but I'm not about to expend that kind of planning effort on such an odd case --- checking for it would waste entirely too many cycles in most cases. regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match