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

Поиск
Список
Период
Сортировка
От Andrey Asyakin
Тема Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re[2]: [pgsql-ru-general] Re[2]: [pgsql-ru-general] Re: [pgsql-ru-general] порядок вставки
Дата
Msg-id CAFnzpOW0Q1J75B7QHF2JaWYcbGVdioOmS+D--q__XsjJy8b=tw@mail.gmail.com
обсуждение исходный текст
Ответ на Re[2]: [pgsql-ru-general] Re: [pgsql-ru-general] порядок вставки  (Иван Фролков <ifrol2001@mail.ru>)
Список 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@debian.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@debian.org jabber://UNera@uvw.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-----


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

Предыдущее
От: "Dmitry E. Oboukhov"
Дата:
Сообщение: Re: Re: [pgsql-ru-general] Re[2]: [pgsql-ru-general] Re[2]: [pgsql-ru-general] Re: [pgsql-ru-general] порядок вставки
Следующее
От: Nikolay Samokhvalov
Дата:
Сообщение: Большая встреча в Mail.ru Group