Re: Re: Mapping output from a SEQUENCE into something non-repeating/colliding but random-looking?

Поиск
Список
Период
Сортировка
От Craig Ringer
Тема Re: Re: Mapping output from a SEQUENCE into something non-repeating/colliding but random-looking?
Дата
Msg-id 49FD24E5.3090509@postnewspapers.com.au
обсуждение исходный текст
Ответ на Re: Mapping output from a SEQUENCE into something non-repeating/colliding but random-looking?  (Jasen Betts <jasen@xnet.co.nz>)
Список pgsql-general
Jasen Betts wrote:

> That means storing a long list of numbers and doing queries similar to
> the following to get ne next value for the sequence.
>
> select id from idtable
>   order by id
>   limit 1
>   offset random(0, (select count (*) from idtable)
>
> a ramdom-looking  1:1 mapping is potentially much more efficient.

You'd probably be better off generating it with something like:

CREATE TABLE shuffled AS (n integer, s integer)
AS SELECT n, NULL FROM generate_series(0, max_value) AS n;

SELECT shuffle(); -- sets `s' for each `n'

... then querying it with:

SELECT s FROM shuffled WHERE n = <value-wanted>;

... but you still have to generate, shuffle, and store a huge collection
of values.

--
Craig Ringer

В списке pgsql-general по дате отправления:

Предыдущее
От: Jasen Betts
Дата:
Сообщение: Re: Mapping output from a SEQUENCE into something non-repeating/colliding but random-looking?
Следующее
От: Craig Ringer
Дата:
Сообщение: Re: Re: Mapping output from a SEQUENCE into something non-repeating/colliding but random-looking?