Size: a a a

pgsql – PostgreSQL

2021 January 29

M

Milkhael in pgsql – PostgreSQL
Victor Yegorov
не факт, в ваших примерах индексы col_7, col_5 и col_3, col_1 тоже допустимы
Тут более инетересен вопрос, играет ли роль порядок столбцов в индексах на таблицу a и таблицу b? По-моему нет… хотя я не уверен
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Milkhael
Тут более инетересен вопрос, играет ли роль порядок столбцов в индексах на таблицу a и таблицу b? По-моему нет… хотя я не уверен
можете примером пояснить? не очень понимаю…
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Максим Брюханов
Всем доброго дня! Помогите пожалуйста скрипт переделываю чтоб клиентов из организации удалить. Что то не выходит
Посмотрите синтаксис DELETE в документации — он не такой (SELECT там нет).
Ну и да, зачем screenshots, есть же текст.
источник

M

Milkhael in pgsql – PostgreSQL
Victor Yegorov
можете примером пояснить? не очень понимаю…
on a using btree(col_1, col_2) + on b using btree(col_5, col_7)
vs
on a using btree(col_2, col_1) + on b using btree(col_5, col_7)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Milkhael
Тут более инетересен вопрос, играет ли роль порядок столбцов в индексах на таблицу a и таблицу b? По-моему нет… хотя я не уверен
источник

МБ

Максим Брюханов... in pgsql – PostgreSQL
Yaroslav Schekin
Посмотрите синтаксис DELETE в документации — он не такой (SELECT там нет).
Ну и да, зачем screenshots, есть же текст.
Спасибо.
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Milkhael
on a using btree(col_1, col_2) + on b using btree(col_5, col_7)
vs
on a using btree(col_2, col_1) + on b using btree(col_5, col_7)
в этой части всё равно
источник

МБ

Максим Брюханов... in pgsql – PostgreSQL
Yaroslav Schekin
Посмотрите синтаксис DELETE в документации — он не такой (SELECT там нет).
Ну и да, зачем screenshots, есть же текст.
DROP TABLE IF EXISTS org_temp;
CREATE TEMP TABLE org_temp
(
   email varchar,
   orgid  uuid

);
COPY
   org_temp (email)
   FROM 'C:\out\max.csv' DELIMITER ';' CSV HEADER;
   
   UPDATE org_temp set orgid = 'a80bf11c-9214-432f-ad34-ac7d00b29b73';

   
   DELETE FROM customerdata__2__organization
   Where customerdata__2__organization IN (select distinct u.customerdataid, ot.orgid from org_temp ot)
   
join "User" u ON u.email = ot.email
   where u.isremoved is false
   and u.customerdataid in (
   select customerdataid from customerdata__2__organization
   where organizationid = 'a80bf11c-9214-432f-ad34-ac7d00b29b73');

ERROR
:  syntax error at or near "join"
LINE 3:     join "User" u ON u.email = ot.email

теперь на JOIN ругается ((
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Вот синтаксис из https://www.postgresql.org/docs/current/sql-delete.html
[ WITH [ RECURSIVE ] with_query [, ...] ]
DELETE FROM [ ONLY ] table_name [ * ] [ [ AS ] alias ]
   [ USING from_item [, ...] ]
   [ WHERE condition | WHERE CURRENT OF cursor_name ]
   [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
Вы здесь где-то видите JOIN? Не придумывайте свой синтаксис, напишите в соответствии с этим. ;)
Там и примеры есть, кстати.
источник

ГА

Георгий Ава... in pgsql – PostgreSQL
Максим Брюханов
DROP TABLE IF EXISTS org_temp;
CREATE TEMP TABLE org_temp
(
   email varchar,
   orgid  uuid

);
COPY
   org_temp (email)
   FROM 'C:\out\max.csv' DELIMITER ';' CSV HEADER;
   
   UPDATE org_temp set orgid = 'a80bf11c-9214-432f-ad34-ac7d00b29b73';

   
   DELETE FROM customerdata__2__organization
   Where customerdata__2__organization IN (select distinct u.customerdataid, ot.orgid from org_temp ot)
   
join "User" u ON u.email = ot.email
   where u.isremoved is false
   and u.customerdataid in (
   select customerdataid from customerdata__2__organization
   where organizationid = 'a80bf11c-9214-432f-ad34-ac7d00b29b73');

ERROR
:  syntax error at or near "join"
LINE 3:     join "User" u ON u.email = ot.email

теперь на JOIN ругается ((
Вы скобку не там закрыли  from org_temp ot)
источник

ГА

Георгий Ава... in pgsql – PostgreSQL
Максим Брюханов
DROP TABLE IF EXISTS org_temp;
CREATE TEMP TABLE org_temp
(
   email varchar,
   orgid  uuid

);
COPY
   org_temp (email)
   FROM 'C:\out\max.csv' DELIMITER ';' CSV HEADER;
   
   UPDATE org_temp set orgid = 'a80bf11c-9214-432f-ad34-ac7d00b29b73';

   
   DELETE FROM customerdata__2__organization
   Where customerdata__2__organization IN (select distinct u.customerdataid, ot.orgid from org_temp ot)
   
join "User" u ON u.email = ot.email
   where u.isremoved is false
   and u.customerdataid in (
   select customerdataid from customerdata__2__organization
   where organizationid = 'a80bf11c-9214-432f-ad34-ac7d00b29b73');

ERROR
:  syntax error at or near "join"
LINE 3:     join "User" u ON u.email = ot.email

теперь на JOIN ругается ((
и запрос у Вас как-то не очень
1 у Вас  customerdata__2__organization IN   , а должно быть поле
2 select distinct u.customerdataid, ot.orgid    не может быть два поля
источник

M

Milkhael in pgsql – PostgreSQL
Victor Yegorov
в этой части всё равно
Что-то не подтверждается экспериментально. Сейчас ещё раз проверю и пришлю тест кейс
источник

МБ

Максим Брюханов... in pgsql – PostgreSQL
Георгий Ава
и запрос у Вас как-то не очень
1 у Вас  customerdata__2__organization IN   , а должно быть поле
2 select distinct u.customerdataid, ot.orgid    не может быть два поля
Да я в SQL не шарю а сделать надо вот и мучаюсь))
источник

M

Milkhael in pgsql – PostgreSQL
Victor Yegorov
в этой части всё равно
источник

VU

Vadim Ushakov in pgsql – PostgreSQL
Есть ли способ задать таймаут локально на один на следующий запрос?
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Vadim Ushakov
Есть ли способ задать таймаут локально на один на следующий запрос?
SET statement_timeout TO '10s';
источник

VY

Victor Yegorov in pgsql – PostgreSQL
и там, и там используется IndexScan. не понимаю что не так?..
источник

M

Milkhael in pgsql – PostgreSQL
Victor Yegorov
и там, и там используется IndexScan. не понимаю что не так?..
Планы совершенно разные же
источник

M

Milkhael in pgsql – PostgreSQL
ну не совершенно, но разные
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Milkhael
Планы совершенно разные же
Обычно, когда говорят о пользе индексов, подразумевают обычные (т.е. селективные) запросы, а не чтение всех таблиц.
Из второго возникают, в основном, лишь глупые мифы про "JOIN-ы медленные!!!11111". :)
источник