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

Можно ли как-то упростить представление user_id, count(user_id) group by user_id?

Запрос выполняется очень медленно

17 ответов

12 просмотров

https://t.me/pgsql/288632

Dmitry-Chexkh Автор вопроса
Михаил Шурутов
https://t.me/pgsql/288632

А нужен ли индекс в данный момент? Чтобы делать селект по user_id? Но он мне тут не нужен, я же вытаскиваю всё view

Dmitry Chexkh
А нужен ли индекс в данный момент? Чтобы делать с...

Но этого-то Вы тоже не написали. В общем, если действительно нужна помощь по производительности, лучше показывать всё это сразу.

Dmitry-Chexkh Автор вопроса
Yaroslav Schekin
Но этого-то Вы тоже не написали. В общем, если дей...

Есть у меня view CREATE OR REPLACE VIEW public.contacts_count AS SELECT contacts.user_id, count(contacts.user_id) AS count FROM contacts WHERE contacts.contact_origin::text = 'Authentic'::text GROUP BY contacts.user_id; И на этот view я шлю запрос select (*) from contacts_count, вот этот запрос выполняется очень долго

Dmitry Chexkh
Есть у меня view CREATE OR REPLACE VIEW public.co...

Ещё раз, покажите всё запрошенное, иначе Вы просто впустую тратите время, понимаете?

Dmitry-Chexkh Автор вопроса
Yaroslav Schekin
Ещё раз, покажите всё запрошенное, иначе Вы просто...

Имеете в виду, что я должен показать еще explain (analyze, buffers)?

Dmitry-Chexkh Автор вопроса
Yaroslav Schekin
Всё перечисленное в https://t.me/pgsql/288632

Ага, благодар. Дождусь результатов explain

Dmitry-Chexkh Автор вопроса
Yaroslav Schekin
Всё перечисленное в https://t.me/pgsql/288632

Есть у меня view CREATE OR REPLACE VIEW public.contacts_count AS SELECT contacts.user_id, count(contacts.user_id) AS count FROM contacts WHERE contacts.contact_origin::text = 'Authentic'::text GROUP BY contacts.user_id; И на этот view я шлю запрос select (*) from contacts_count, вот этот запрос выполняется очень долго Вот експлейн https://explain.depesz.com/s/InfQ - это на локале PostgreSQL 13.1 (Debian 13.1-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit на локале На проде PostgreSQL 11.6 (Ubuntu 11.6-1.pgdg18.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, 64-bit

Dmitry-Chexkh Автор вопроса
Dmitry Chexkh
Так, а это что?

Метакоманда psql для вывода описания объекта (таблицы, на которой основан view, в данном случае): \d contacts Покажите результат.

Dmitry-Chexkh Автор вопроса
Yaroslav Schekin
Метакоманда psql для вывода описания объекта (табл...

Это в консоле прописывать? Или вот этот результат нужен? CREATE TABLE public.contacts ( id bigserial NOT NULL, user_id int8 NOT NULL, phone_number varchar NULL, country_code varchar NULL, contact_name varchar NULL, email varchar NULL, company varchar NULL, job_title varchar NULL, account_name varchar NULL, contact_group int4 NULL, created_at timestamp NULL, updated_times int8 NOT NULL DEFAULT 0, contact_origin varchar NULL, CONSTRAINT contacts_pk PRIMARY KEY (id), CONSTRAINT contacts_un UNIQUE (user_id, phone_number, country_code) ); CREATE UNIQUE INDEX contacts_id_uindex ON public.contacts USING btree (id); CREATE INDEX contacts_phone_number_country_code_idx ON public.contacts USING btree (phone_number, country_code);

Dmitry Chexkh
Это в консоле прописывать? Или вот этот результат ...

Это "прописывать" в psql. Это единственный "официальный" клиент, а откуда Вы берёте вот это вот, я не знаю (бывает, что другие GUI / клиенты выдают DDL не полностью или перевирают его). ;) А так, по плану — таблица в основном считывается с диска (или, по крайней мере, из кеша FS — PostgreSQL не различает, откуда), и это 6 GB, и почти у всех записей contact_origin = 'Authentic' (кстати, использовали бы Вы text вместо varchar, по-хорошему). Поэтому тут всё зависит от производительности диска или наличия достаточного кол-ва RAM (и настроек сервера PostgreSQL и OS, соответственно). В принципе, запрос можно попробовать ускорить, создав какой-то (один) из этих индексов (со вторым быстрее, но он подходит только для этого запроса, практически): CREATE INDEX ON contacts(contact_origin, user_id); CREATE INDEX ON contacts(user_id) WHERE contact_origin = 'Authentic'; И да, зачем Вы используете COUNT(contacts.user_id), когда user_id int8 NOT NULL? Достаточно COUNT(*).

Dmitry-Chexkh Автор вопроса
Yaroslav Schekin
Это "прописывать" в psql. Это единственный "официа...

А почему planning time так сильно отличается от execution time? Потому что у меня постгрес развернут в докере, это проблема на локале такого долгого запроса?

Dmitry Chexkh
А почему planning time так сильно отличается от ex...

Потому что и должно? ;) Это совершенно разные вещи, если что.

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

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

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Всем привет! Кто пользуется DevExpress, подскажите пожалуйста, реализован ли в TcxGrid в новых версиях поиск по датам как в Экселе (ну т.е. не просто список чекбоксов со значе...
A Z
4
Карта сайта