Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re[2]: [pgsql-ru-general] Re[2]: [pgsql-ru-general] Re: [pgsql-ru-general] порядок вставки

From: Andrey Asyakin <asan999(at)gmail(dot)com>
To: "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org>
Cc: Иван Фролков <ifrol2001(at)mail(dot)ru>, pgsql-ru-general(at)postgresql(dot)org
Subject: Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re[2]: [pgsql-ru-general] Re[2]: [pgsql-ru-general] Re: [pgsql-ru-general] порядок вставки
Date: 2015-10-20 16:22:15
Message-ID: CAFnzpOW0Q1J75B7QHF2JaWYcbGVdioOmS+D--q__XsjJy8b=tw@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-ru-general

что касается второго, видимо, может. это ж обычный запрос, подчиняется
общим правилам планировщика.. with, по сути, более удобная форма записи
подзапросов, так что order by в итоговом селект не помешает, кажись. хотя в
твоем случае на практике скорей всего все будет работать правильно и без
order by.

насчет первого, опять не уверен, что понял правильно. именно вот так:

WITH "a" AS (
SELECT ..
),
"b" AS (
SELECT
...
"a"
)
INSERT INTO ... SELECT * FROM *"a";*

???

если да, то не повлияет. *а *это уже сформированный набор строк, типа
временной таблицы или подзапроса, на нее не повлияет выборка из нее. b AS
( ) просто для примера? а то как то бессмысленно выглядит)

ну и еще раз, на всякий, в любом случае

INSERT INTO dest SELECT * FROM *source*; - не важно, откуда возвращает
данные SELECT, в dest они будут вставляться в том же порядке, в каком их
возвращает SELECT

20 октября 2015 г., 15:45 пользователь Dmitry E. Oboukhov <unera(at)debian(dot)org>
написал:

> > Я по другому понял вопрос, может ли в запросе insert .. select записи
> > вставиться не в том порядке, в котором их возвращает select. Насколько я
> понял,
> > нет, потому что для инсерта не создается какого то особого плана, план
> > создается для селекта, просто вместо отправки клиенту записи пишутся в
> таблицу.
>
> Да вопрос именно в этом.
> интересно: может ли выборка секции WITH быть пересортирована в
> процессе выполнения другого подзапроса WITH
>
> WITH "a" AS (
> SELECT ..
> ),
> "b" AS (
> SELECT
> ...
> "a"
> )
> INSERT INTO ... SELECT * FROM "a";
>
> это первый непонятный кейз
>
> и второй
>
> может ли выборка секции WITH быть пересортирована в процессе
> хранения/просто выборки из нее:
>
> SELECT * FROM "a"
>
> строит же план? или всегда выберет из виртуальной таблицы в том
> порядке в котором выбралось?
>
> то есть в общем-то хочется понимания о том как устроено хранилище
> промежуточных результатов WITH: что там, plain массив или может быть
> например hash?
>
>
> > что то я не пойму насчет WITH, зачем он? если формируешь сам, чем не
> устраивает
> > INSERT TO "billing_log"
> > ("rollback", "sum", "txnname")
> > VALUES
> > (TRUE, -123, 'заказ 342'),
> > (FALSE, 10, 'заказ 342')
>
> ну тут я развернул для ясности что я хочу получить, но на практике оба
> значения - выборки with
>
> --
>
> . ''`. Dmitry E. Oboukhov
> : :’ : email: unera(at)debian(dot)org jabber://UNera(at)uvw(dot)ru
> `. `~’ GPGKey: 1024D / F8E26537 2006-11-21
> `- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
>
> iEUEAREDAAYFAlYmN4QACgkQq4wAz/jiZTcrOwCYk+hBbI9zRBvJXRolXvTJ6n4q
> /wCgmPf7oZOHDoHRJpfHQGjrv0SUNpg=
> =GkFE
> -----END PGP SIGNATURE-----
>
>

In response to

Browse pgsql-ru-general by date

  From Date Subject
Next Message Nikolay Samokhvalov 2015-10-24 16:04:00 Большая встреча в Mail.ru Group
Previous Message Dmitry E. Oboukhov 2015-10-20 12:45:56 Re: Re: [pgsql-ru-general] Re[2]: [pgsql-ru-general] Re[2]: [pgsql-ru-general] Re: [pgsql-ru-general] порядок вставки