Re: Clustered table order is not preserved on insert
| От | Andrus |
|---|---|
| Тема | Re: Clustered table order is not preserved on insert |
| Дата | |
| Msg-id | e2ojqe$17e4$1@news.hub.org обсуждение исходный текст |
| Ответ на | Clustered table order is not preserved on insert ("Andrus" <eetasoft@online.ee>) |
| Ответы |
Re: Clustered table order is not preserved on insert
|
| Список | pgsql-general |
> You are never guaranteed any order in a result set unless you use
> ORDER BY in the query.
I cannot use order by since postgres must generate new values for id column.
For this case, id column must not exist in insertable table.
> Because PG treats UPDATE as DELETE + INSERT,
> the table ordering changes all the time.
This is excellent explanation! Thank you.
I changed by code so that clustering is performed after UPDATE command:
CREATE temp TABLE tempreport AS
SELECT * FROM report
WHERE reportname='oldr';
UPDATE tempreport SET reportname='newr';
CREATE TEMP TABLE t2 AS SELECT * FROM tempreport ORDER BY id;
ALTER TABLE t2 DROP COLUMN id;
insert into report SELECT * FROM t2;
Will DROP COLUMN preserve table clustering ?
Is it reasonable to expect that clustered table is inserted in pyhical
order ?
Is it OK to use this code ?
Andrus.
В списке pgsql-general по дате отправления: