Size: a a a

pgsql – PostgreSQL

2021 February 26

YS

Yaroslav Schekin in pgsql – PostgreSQL
Шипулин Алексей
платный он к сожалению
Нет.

И да, если у Вас возникают хоть какие-то вопросы вроде "через pg_start_backup - только не понятно как" — не используйте этот подход ни в коем случае (всё равно ошибётесь) © один из авторов pgBackRest. ;)
источник

СК

Саша Козлов... in pgsql – PostgreSQL
Yaroslav Schekin
Я же написал "и т.п.", то есть возможно, что понадобится запретить ещё какие-то варианты.
И что такое "не помогло", т.е. какой план был выбран?
Seq Scan on core_zreportcurrencypart  (cost=0.00..3069364.98 rows=12730378 width=478)
 Filter: ((amount_in_byn IS NULL) AND ((currency)::text <> 'BYN'::text))

фильтр ((

добавил простой индекс
CREATE INDEX core_zreportcurrencypart_currency_idx ON public.core_zreportcurrencypart USING btree (currency)

и на простой запрос
SELECT * FROM core_zreportcurrencypart WHERE  currency = 'BYN' ;

все равно сканирование и фильтр
Seq Scan on core_zreportcurrencypart  (cost=0.00..3069364.98 rows=107746420 width=478)
 Filter: ((currency)::text = 'BYN'::text)
источник

ША

Шипулин Алексей... in pgsql – PostgreSQL
Yaroslav Schekin
Нет.

И да, если у Вас возникают хоть какие-то вопросы вроде "через pg_start_backup - только не понятно как" — не используйте этот подход ни в коем случае (всё равно ошибётесь) © один из авторов pgBackRest. ;)
спасибо, буду смотреть в сторону пробекапа
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Саша Козлов
Seq Scan on core_zreportcurrencypart  (cost=0.00..3069364.98 rows=12730378 width=478)
 Filter: ((amount_in_byn IS NULL) AND ((currency)::text <> 'BYN'::text))

фильтр ((

добавил простой индекс
CREATE INDEX core_zreportcurrencypart_currency_idx ON public.core_zreportcurrencypart USING btree (currency)

и на простой запрос
SELECT * FROM core_zreportcurrencypart WHERE  currency = 'BYN' ;

все равно сканирование и фильтр
Seq Scan on core_zreportcurrencypart  (cost=0.00..3069364.98 rows=107746420 width=478)
 Filter: ((currency)::text = 'BYN'::text)
Значит, "set enable_seqscan = off" Вы так и не включили.
Иначе это выглядело бы как-то так:
 Seq Scan on core_zreportcurrencypart  (cost=10000000000.00..10000000091.00 ...
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Саша Козлов
Seq Scan on core_zreportcurrencypart  (cost=0.00..3069364.98 rows=12730378 width=478)
 Filter: ((amount_in_byn IS NULL) AND ((currency)::text <> 'BYN'::text))

фильтр ((

добавил простой индекс
CREATE INDEX core_zreportcurrencypart_currency_idx ON public.core_zreportcurrencypart USING btree (currency)

и на простой запрос
SELECT * FROM core_zreportcurrencypart WHERE  currency = 'BYN' ;

все равно сканирование и фильтр
Seq Scan on core_zreportcurrencypart  (cost=0.00..3069364.98 rows=107746420 width=478)
 Filter: ((currency)::text = 'BYN'::text)
Да и вообще, покажите \d таблицы, что мы гадаем? ;)
источник

VF

Vladimir Fomin in pgsql – PostgreSQL
OID - уникальный идентификатор строки.
Какой командой можно запросить эту строку?
источник

СК

Саша Козлов... in pgsql – PostgreSQL
Yaroslav Schekin
Значит, "set enable_seqscan = off" Вы так и не включили.
Иначе это выглядело бы как-то так:
 Seq Scan on core_zreportcurrencypart  (cost=10000000000.00..10000000091.00 ...
Seq Scan on core_zreportcurrencypart  (cost=10000000000.00..10003069364.98 rows=12730378 width=478)
 Filter: ((amount_in_byn IS NULL) AND ((currency)::text <> 'BYN'::text))

на некоторых запросах+индексах сработало. стало ли быстрее - буду еще разбираться.

конкретно этот уперся
источник

СК

Саша Козлов... in pgsql – PostgreSQL
Yaroslav Schekin
Да и вообще, покажите \d таблицы, что мы гадаем? ;)
отличная идея. есть над чем подумать.
источник

СК

Саша Козлов... in pgsql – PostgreSQL
Yaroslav Schekin
Да и вообще, покажите \d таблицы, что мы гадаем? ;)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Текстом!
источник

СК

Саша Козлов... in pgsql – PostgreSQL
как понять что с ними не так?
так тут сразу видно
источник

СК

Саша Козлов... in pgsql – PostgreSQL
"core_zreportcurrencypart_currency_not_byn_idx" btree ((currency::text <> 'BYN'::text)) INVALID
   "core_zreportcurrencypart_empty_byn_idx" btree ((amount_in_byn IS NULL), (currency::text <> 'BYN'::text)) INVALID
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Саша Козлов
как понять что с ними не так?
так тут сразу видно
Ну и удачи в поисках. Текстом я бы мог попробовать у себя, а так — нет.
источник

СК

Саша Козлов... in pgsql – PostgreSQL
Yaroslav Schekin
Ну и удачи в поисках. Текстом я бы мог попробовать у себя, а так — нет.
Индексы:
   "core_zreportcurrencypart_pkey" PRIMARY KEY, btree (id)
   "core_zreportcurrencypart_currency_byn_idx" btree ((currency::text = 'BYN'::text))
   "core_zreportcurrencypart_currency_idx" btree (currency)
   "core_zreportcurrencypart_currency_not_byn_idx" btree ((currency::text <> 'BYN'::text)) INVALID
   "core_zreportcurrencypart_empty_byn_idx" btree ((amount_in_byn IS NULL), (currency::text <> 'BYN'::text)) INVALID
   "core_zreportcurrencypart_zreport_id" btree (zreport_id)
Ограничения-проверки:
   "core_zreportcurrencypart_cancels_count_check" CHECK (cancels_count >= 0)
   "core_zreportcurrencypart_corrections_count_check" CHECK (corrections_count >= 0)
   "core_zreportcurrencypart_documents_count_check" CHECK (documents_count >= 0)
   "core_zreportcurrencypart_issuances_count_check" CHECK (issuances_count >= 0)
   "core_zreportcurrencypart_placing_count_check" CHECK (placing_count >= 0)
   "core_zreportcurrencypart_refunds_count_check" CHECK (refunds_count >= 0)
   "core_zreportcurrencypart_unregistred_cancels_count_check" CHECK (unregistred_cancels_count >= 0)
Ограничения внешнего ключа:
   "core_zreportcurr_zreport_id_2d29e4ac9e4942e7_fk_core_zreport_id" FOREIGN KEY (zreport_id) REFERENCES core_zreport(id) DEFERRABLE INITIALLY DEFERRED
источник

СК

Саша Козлов... in pgsql – PostgreSQL
Yaroslav Schekin
Ну и удачи в поисках. Текстом я бы мог попробовать у себя, а так — нет.
CREATE TABLE public.core_zreportcurrencypart (
 id serial NOT NULL,
 zreport_id int4 NOT NULL,
 currency varchar(3) NOT NULL,
 documents_count int4 NOT NULL,
 amount numeric(100,2) NOT NULL,
 clearing_amount numeric(100,2) NOT NULL,
 cash_amount numeric(100,2) NOT NULL,
 refunds_count int2 NOT NULL,
 refunds_amount numeric(100,2) NOT NULL,
 placing_count int2 NOT NULL,
 placing_amount numeric(100,2) NOT NULL,
 issuances_count int2 NOT NULL,
 issuances_amount numeric(100,2) NOT NULL,
 unregistred_cancels_count int2 NOT NULL,
 unregistred_cancels_amount numeric(100,2) NOT NULL,
 cancels_count int2 NOT NULL,
 cancels_amount numeric(100,2) NOT NULL,
 corrections_count int2 NOT NULL,
 corrections_amount numeric(100,2) NOT NULL,
 amount_in_byn numeric(100,2) NULL,
 clearing_amount_in_byn numeric(100,2) NULL,
 cash_amount_in_byn numeric(100,2) NULL,
 refunds_amount_in_byn numeric(100,2) NULL,
 placing_amount_in_byn numeric(100,2) NULL,
 issuances_amount_in_byn numeric(100,2) NULL,
 unregistred_cancels_amount_in_byn numeric(100,2) NULL,
 cancels_amount_in_byn numeric(100,2) NULL,
 corrections_amount_in_byn numeric(100,2) NULL,
 CONSTRAINT core_zreportcurrencypart_cancels_count_check CHECK ((cancels_count >= 0)),
 CONSTRAINT core_zreportcurrencypart_corrections_count_check CHECK ((corrections_count >= 0)),
 CONSTRAINT core_zreportcurrencypart_documents_count_check CHECK ((documents_count >= 0)),
 CONSTRAINT core_zreportcurrencypart_issuances_count_check CHECK ((issuances_count >= 0)),
 CONSTRAINT core_zreportcurrencypart_pkey PRIMARY KEY (id),
 CONSTRAINT core_zreportcurrencypart_placing_count_check CHECK ((placing_count >= 0)),
 CONSTRAINT core_zreportcurrencypart_refunds_count_check CHECK ((refunds_count >= 0)),
 CONSTRAINT core_zreportcurrencypart_unregistred_cancels_count_check CHECK ((unregistred_cancels_count >= 0)),
 CONSTRAINT core_zreportcurr_zreport_id_2d29e4ac9e4942e7_fk_core_zreport_id FOREIGN KEY (zreport_id) REFERENCES core_zreport(id) DEFERRABLE INITIALLY DEFERRED
);
CREATE INDEX core_zreportcurrencypart_currency_byn_idx ON public.core_zreportcurrencypart USING btree ((((currency)::text = 'BYN'::text)));
CREATE INDEX core_zreportcurrencypart_currency_idx ON public.core_zreportcurrencypart USING btree (currency);
CREATE INDEX core_zreportcurrencypart_currency_not_byn_idx ON public.core_zreportcurrencypart USING btree ((((currency)::text <> 'BYN'::text)));
CREATE INDEX core_zreportcurrencypart_empty_byn_idx ON public.core_zreportcurrencypart USING btree (((amount_in_byn IS NULL)), (((currency)::text <> 'BYN'::text)));
CREATE INDEX core_zreportcurrencypart_zreport_id ON public.core_zreportcurrencypart USING btree (zreport_id);
источник

A

AbdulAziz in pgsql – PostgreSQL
У меня 1 вопрос. Какие существуют типы триггеров в Postgresql и что они из себя представляют? В одних и тех же данных 4 разных, 2 разных и 3 разных!
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Саша Козлов
CREATE TABLE public.core_zreportcurrencypart (
 id serial NOT NULL,
 zreport_id int4 NOT NULL,
 currency varchar(3) NOT NULL,
 documents_count int4 NOT NULL,
 amount numeric(100,2) NOT NULL,
 clearing_amount numeric(100,2) NOT NULL,
 cash_amount numeric(100,2) NOT NULL,
 refunds_count int2 NOT NULL,
 refunds_amount numeric(100,2) NOT NULL,
 placing_count int2 NOT NULL,
 placing_amount numeric(100,2) NOT NULL,
 issuances_count int2 NOT NULL,
 issuances_amount numeric(100,2) NOT NULL,
 unregistred_cancels_count int2 NOT NULL,
 unregistred_cancels_amount numeric(100,2) NOT NULL,
 cancels_count int2 NOT NULL,
 cancels_amount numeric(100,2) NOT NULL,
 corrections_count int2 NOT NULL,
 corrections_amount numeric(100,2) NOT NULL,
 amount_in_byn numeric(100,2) NULL,
 clearing_amount_in_byn numeric(100,2) NULL,
 cash_amount_in_byn numeric(100,2) NULL,
 refunds_amount_in_byn numeric(100,2) NULL,
 placing_amount_in_byn numeric(100,2) NULL,
 issuances_amount_in_byn numeric(100,2) NULL,
 unregistred_cancels_amount_in_byn numeric(100,2) NULL,
 cancels_amount_in_byn numeric(100,2) NULL,
 corrections_amount_in_byn numeric(100,2) NULL,
 CONSTRAINT core_zreportcurrencypart_cancels_count_check CHECK ((cancels_count >= 0)),
 CONSTRAINT core_zreportcurrencypart_corrections_count_check CHECK ((corrections_count >= 0)),
 CONSTRAINT core_zreportcurrencypart_documents_count_check CHECK ((documents_count >= 0)),
 CONSTRAINT core_zreportcurrencypart_issuances_count_check CHECK ((issuances_count >= 0)),
 CONSTRAINT core_zreportcurrencypart_pkey PRIMARY KEY (id),
 CONSTRAINT core_zreportcurrencypart_placing_count_check CHECK ((placing_count >= 0)),
 CONSTRAINT core_zreportcurrencypart_refunds_count_check CHECK ((refunds_count >= 0)),
 CONSTRAINT core_zreportcurrencypart_unregistred_cancels_count_check CHECK ((unregistred_cancels_count >= 0)),
 CONSTRAINT core_zreportcurr_zreport_id_2d29e4ac9e4942e7_fk_core_zreport_id FOREIGN KEY (zreport_id) REFERENCES core_zreport(id) DEFERRABLE INITIALLY DEFERRED
);
CREATE INDEX core_zreportcurrencypart_currency_byn_idx ON public.core_zreportcurrencypart USING btree ((((currency)::text = 'BYN'::text)));
CREATE INDEX core_zreportcurrencypart_currency_idx ON public.core_zreportcurrencypart USING btree (currency);
CREATE INDEX core_zreportcurrencypart_currency_not_byn_idx ON public.core_zreportcurrencypart USING btree ((((currency)::text <> 'BYN'::text)));
CREATE INDEX core_zreportcurrencypart_empty_byn_idx ON public.core_zreportcurrencypart USING btree (((amount_in_byn IS NULL)), (((currency)::text <> 'BYN'::text)));
CREATE INDEX core_zreportcurrencypart_zreport_id ON public.core_zreportcurrencypart USING btree (zreport_id);
Ну и вот проблема, во-первых:
"core_zreportcurrencypart_currency_not_byn_idx" btree ((currency::text <> 'BYN'::text)) INVALID
"core_zreportcurrencypart_empty_byn_idx" btree ((amount_in_byn IS NULL), (currency::text <> 'BYN'::text)) INVALID

Индексы-то не создались.
источник

СК

Саша Козлов... in pgsql – PostgreSQL
Yaroslav Schekin
Ну и вот проблема, во-первых:
"core_zreportcurrencypart_currency_not_byn_idx" btree ((currency::text <> 'BYN'::text)) INVALID
"core_zreportcurrencypart_empty_byn_idx" btree ((amount_in_byn IS NULL), (currency::text <> 'BYN'::text)) INVALID

Индексы-то не создались.
дада. вот увидел только тут
бобер то не показывает
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Саша Козлов
дада. вот увидел только тут
бобер то не показывает
Вот в том числе поэтому я не люблю все эти GUI — они "соврут" подобным образом, и N часов потеряно. ;(
А индекс-то рабочий — https://dbfiddle.uk/?rdbms=postgres_13&fiddle=1771471693009c78b749b3a5458708bc
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
AbdulAziz
У меня 1 вопрос. Какие существуют типы триггеров в Postgresql и что они из себя представляют? В одних и тех же данных 4 разных, 2 разных и 3 разных!
А Вы документацию почитайте, о каких "данных" речь?
источник