172 похожих чатов

Hola! Есть возможность как-то реально оценить сколько ресурсов будет требовать какое-то

sql выражение?

Есть задача из view core_order_events сделать таблицу
Я это делала как показано ниже, потом дропнула view и переименовала таблицу
CREATE TABLE core_order_events_new AS SELECT * FROM core_order_events ORDER BY order_id

Лид топит за то, что бы создать сначала таблицу, потом заполнить так
INSERT INTO core_order_events_new(here goes list of columns)
SELECT * FROM core_order_events;

Может кто сравнивал или уже знает... Что из этого эффективнее? Есть прям сильный перекос в какую нибудь из сторон?

17 ответов

6 просмотров

Должно быть одинаково

Zamira-Norova Автор вопроса
Konstantin Zaitsev
Должно быть одинаково

А есть вообще инструмент, которым можно было бы оценить?

Создайте тестовую БД да проверьте )

Zamira-Norova Автор вопроса
Sergey Bezrukov
Создайте тестовую БД да проверьте )

Да и то и другое работает. Второй способ я проверю. Меня интересуют 2 вещи 1. Есть ли реальный инструмент, которым можно оценить сколько ресурсов это использует. Что бы к лиду идти точными данными 2. Может у какогото из способов есть подводные камни, о которых я могу не знать

Zamira Norova
Да и то и другое работает. Второй способ я проверю...

1. Нет, только тест. 2. Теоретически возможно, что создание таблицы в "длинной транзакции" с копированием данных чего-нибудь там залочит. Надо смотреть документацию и, возможно, исходники - как это реализовано.

Zamira Norova
А есть вообще инструмент, которым можно было бы оц...

Конечно. https://magazine.tagheuer.com/en/2023/06/29/only-watch-2023-the-new-tag-heuer-monaco-split-seconds-chronograph/

А зачем вы order by вставили?

Zamira-Norova Автор вопроса
Zamira-Norova Автор вопроса
Ilya Anfimov
А зачем вы order by вставили?

Это фигня. Можно убрать. Хотела что бы id и order_id были возрастающими. Просто во вью order by order_id desc

Есть определённые нюансы которые create-table-as-select передать не сможет postgres=# create table test1(txt text); CREATE TABLE postgres=# alter table test1 alter column txt set storage plain; ALTER TABLE postgres=# insert into test1 select repeat(md5(a::text),160) from generate_series(1,100) a; INSERT 0 100 postgres=# create table test2 as select * from test1; SELECT 100 postgres=# \dt+ test* List of relations Schema | Name | Type | Owner | Persistence | Access method | Size | Description --------+-------+-------+----------+-------------+---------------+--------+------------- public | test1 | table | postgres | permanent | heap | 832 kB | public | test2 | table | postgres | permanent | heap | 24 kB | (2 rows) postgres=#

Zamira-Norova Автор вопроса
Sergey Gr
Есть определённые нюансы которые create-table-as-s...

А что он мог не передать аж на 800+ kb? Я очень извиняюсь за глупые вопросы. Правда хотелось бы знать что под капотом

Zamira Norova
А что он мог не передать аж на 800+ kb? Я очень из...

Данные везде одинаковые. Для поля txt в таблице test1 не разрешено сжатие. А в таблице test2 соответственно разрешено.

Zamira-Norova Автор вопроса

В PG вроде нет разницы, а в Greenplum с CTAS всякие интересные баги исторически бывали (к 7 версии вроде всё пофиксят) - там аккуратно надо Ну и ещё надо помнить, что в CTAS такой же INSERT выполняется с такими же блокировками. Видел коллег, которые удивлялись, что CTAS им блокирует DDL на таблицах-источниках (как и любой INSERT/UPDATE/DELETE)

Zamira-Norova Автор вопроса

Похожие вопросы

Обсуждают сегодня

Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
А дальше что?.. Записать в файл, потом в Код?.. И потом разбирать как-то?..
Хаскель Моисеевич Гопник
14
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
А чем вам питонисты не угодили?😂
.
79
доброго времени. db, dw и прочие исполняются при трансляции или при выполнении программы?
lutayyy
10
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Есть предложения, как подобное можно упростить?
Hemul GM
12
@y0zhig @shizzard А можно я опишу цель и может вообще ерланг мне не подходит. На текущий момент как я понимаю у ерланга есть легковесные потоки и задача выполняется в каком т...
Дмитрий Спиридонов
5
У меня вопросик назрел. Почему, создав класс без наследования и реализации деструктора Destroy, деструктор не вызывался при free. Потом указал наследование от tobject и overri...
Сергей Бычков
9
Карта сайта