> > >
> >
> > ok. I accept it. Can be some note there? Not this strange select.
>
> Well, with 8.3 having this be faster I am thinking we should wait to see
> if the hacks are needed.
>
difference, on 10K lines (on small think table)
postgres=# select * from test where i = any(array(select
(random()*10000)::int from generate_series(1,20))) limit 1;
i | v
-----+-----
869 | 113
(1 row)
Time: 3,984 ms
postgres=# select * from test order by random() limit 1;
i | v
------+-----
3687 | 293
(1 row)
Time: 21,978 ms
8.2
postgres=# select * from test order by random() limit 1;
i | v
------+-----
4821 | 608
(1 row)
Time: 51,299 ms
postgres=# select * from test where i = any(array(select
(random()*10000)::int from generate_series(1,20))) limit 1;
i | v
-----+-----
762 | 254
(1 row)
Time: 4,530 ms
Results:
8.3 "fast solution' is 6x faster
8.2 'fast solution' is 11x faster .. it's minimum.
Pavel
for me, it's one from typical beginers mistakes
---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?
http://archives.postgresql.org