
Ilia
27.07.2018
14:24:42
Например, таблица 10 млн записей, флаг isProcessed = fasle имеет 100 записей из этих 10 млн. Индекс будет полезен и будет работать для условия
isProcessed = false
При этом конечно стоит по условию делать опциональный индекс (или фукнциональный).
Я правда не знаю, как PG умеет ли такое.

Evgeniy
27.07.2018
14:28:59
partial называется, умеет

Ilia
27.07.2018
14:31:25
Тогда это отлично подойдёт для такого индекса.
Сам индеск будет маленьким, а пользы от него будет много

Google

Mike Chuguniy
27.07.2018
14:35:40
Нет - это конечно, грубовато, но тем, не менее...

Volodymyr Kostyrko
27.07.2018
18:32:35
А в логи можно писать количество возвращаемых строк.

Anton [Mgn, az09@osm]
28.07.2018
04:52:25

Onegai
28.07.2018
06:49:17
Подскажите, пожалуйста, что-то сам туплю
Как получить значения из столбца alias, которым соответствуют userid, которые, в свою очередь взяты из другой таблицы
кажется непонятно объяснил ?
В общем, есть таблицы Participants, и UserAliases. Нужно из таблицы Participants взять UserId, и найти соответствующие этим id alias в таблицt Useraliases
как бы сквозной запрос
select Userid from Participants where ChatId=17
получаем список userid. А как из него получить alias, из другой таблицы?
Что-то типа такого select UserAliases.alias where UserAliases.userid=Participants.userid where Participants.ChatId=17

Google

Onegai
28.07.2018
07:25:36
Вроде подразобрался
select alias from UserAliases where UserId=(select Participants.Userid from Participants where ChatId=17)
Но выводит только одно значение

Mike Chuguniy
28.07.2018
07:30:32
@onegai ключевое слово для поиска нужной информации - JOIN. А если одно значение - посмотрите глазками, вполне может оказаться, что оно именно одно.

Onegai
28.07.2018
07:31:24

Mike Chuguniy
28.07.2018
07:32:53
ЗЫ. Хотя ПГ достаточно умный, чтобы планы запросов с JOIN или подзапросом были идентичными.

Onegai
28.07.2018
07:38:53
select Alias from UserAliases, Participants where UserAliases.UserId=Participants.Userid and Participants.ChatId=17
Вот так получилось ? Вроде правильный результат выдает ?

The
28.07.2018
10:05:57
ребятки, есть кейсы когда uuid как PK лучше не юзать?
читаю везде, говорят что работают превосходно, разве что весят чуть больше и джойнятся чуть дольше, и нельзя делать ORDER BY id;

Volodymyr Kostyrko
28.07.2018
11:07:09
Смысла просто не будет. Хотя его и так нет. Если они в тосте то индекс всё равно небольшой. Вот сравнение кончно и сохранение, уникальность будет дольше...

Ilia
28.07.2018
21:55:42

Akylai
29.07.2018
02:26:56
Akylai M:
Добрый день всем , я извеняюсь за тупой вопрос но у меня стоит задача написать запрос ,для вывода сводной таблицы я раньше выводила подобное но на постгресс что то все время не получается
Необходимо вывести количество транзакций за определенный период
Akylai M:
пишу такой запрос он определяет лишь колисчество но вот по статусу но вотт функцию со временем сюда не могу довписать
типо такого должно получиться

Alex
29.07.2018
02:40:26
Где в запросе date?

Akylai
29.07.2018
02:45:20
Вот я не знаю кужа егу засунуть
Куда

Art
29.07.2018
05:27:28
этой книжки достаточно будет для нормальной работы с постгресом на реальных проектах? Или еще есть что прочитать?
https://postgresql.leopard.in.ua/images/cover-62ab3a7e.jpg

Google

Mike Chuguniy
29.07.2018
05:31:14
@artnv я бы рекомендовал начать с курсов postgrespro: https://postgrespro.ru/education/courses

Art
29.07.2018
05:40:23
спасибо конечно, но остальное как-то без курсов осилил, думаю и это тоже можно

Anton [Mgn, az09@osm]
29.07.2018
05:42:42
Pivot какой-нибудь? С кубами. Сложно короче

Виктор
29.07.2018
05:55:20

Konstantin
29.07.2018
05:58:43

Art
29.07.2018
05:59:06
да там она бесплатная еще и в пдф и в хтмл epub

Konstantin
29.07.2018
05:59:17
Океюшки

Art
29.07.2018
06:00:32
Океюшки
https://postgresql.leopard.in.ua/

Виктор
29.07.2018
06:01:21
В большистве случаев решается на уровне приложения. Допустим под .NET есть мощный инструмент nreco, под python - pandas и т.д.

wonser
29.07.2018
07:18:13
Подскажите, как поведет себя btree index, если будет много дубликатов
Скажем такая таблица
table chat(id bigserial, accountId int, name text)
Если сделаю индекс по колонке accountId
В случае поиска понятно, будет импрувмент, а при инсерте, апдейте, удалении базе прийдется проходить полностью по всем узлам с одинаковым значением?
Имет ли смысл сделать индекс на две колонки (accountId, id)?

Denis
29.07.2018
07:24:14
одно уникальное значение - один узел дерева
поэтому нет, не придется обходить все

wonser
29.07.2018
07:25:32

Denis
29.07.2018
07:25:58
но вы же спрашивали про дубликаты, или я не понял?
окей, я понял
ладно, утвеждать не возьмусь, может, коллеги подскажут

wonser
29.07.2018
07:28:37

Denis
29.07.2018
07:29:24
просто мне показалось неоптимальным перебирать все rowid, если известно, что они относятся к одному и тому же значению поля, и я верю, что база это учитывает

wonser
29.07.2018
07:47:08

The
29.07.2018
07:58:24
Есть таблица такая:
id uuid PK
seller_id uuid REFERENCES seller(id)
status state DEFAULT 'new' -- state - кастомный тип ENUM
...
Можно ли как-то сделать такой констрейнт, чтобы в таблице могла быть только одна запись со status = 'new' для каждого seller_id. При этом, остальные status, например 'send', 'paid' и т.д., может быть много для одного и того же seller_id?

Google

wonser
29.07.2018
08:03:37

The
29.07.2018
08:04:03
разве это не создаст уникальный индекс по всему столбцу state?

Admin
ERROR: S client not available

The
29.07.2018
08:04:22
сейчас попробую, спасибо

wonser
29.07.2018
08:30:15
Example 11-3. Setting up a Partial Unique Index

The
29.07.2018
08:31:23
ну я пока DDL описываю, данными не заливал, т.к. там куча REFERENCES. но в ддлке прописалось, и я уже натыкался на такой вариант, но по тупости не увидел что там есть ON table(column)
так что думаю будет работать :)

wonser
29.07.2018
08:52:41

The
29.07.2018
08:53:41
да, я уже понял)

Dmitry
29.07.2018
09:53:48

Andrey
29.07.2018
10:34:43
но там много практики полезной
именно чтобы быстро войти в тему

Yaroslav
29.07.2018
10:57:11

Fike
29.07.2018
10:58:33
где ожидать ошибки - да

Dmitry
29.07.2018
10:59:21
Да, в программировании.
Сколько бы иной книг не прочитал, он никогда ничему не научится, пока не напишет какой-либо реальный проект сложнее хеллворлда.

Google

Yaroslav
29.07.2018
11:00:50
Ну а я бы сказал — наборот. Отрасль в целом переполнена недоучками-"практиками", IMHO.

Dmitry
29.07.2018
11:01:35
И толк от них околонулевой.

Darafei
29.07.2018
11:02:10
вполне есть толк, только они компиляторы всякие пишут

Dmitry
29.07.2018
11:02:36

Yaroslav
29.07.2018
11:02:57
Эээ... что именно вы называете "отраслью", в таком случае?

Dmitry
29.07.2018
11:03:19
Ну и читают "труды" друг друга. И ходят вокруг дуба по цепи ))

Darafei
29.07.2018
11:04:33
Подскажите, как поведет себя btree index, если будет много дубликатов
Скажем такая таблица
table chat(id bigserial, accountId int, name text)
Если сделаю индекс по колонке accountId
В случае поиска понятно, будет импрувмент, а при инсерте, апдейте, удалении базе прийдется проходить полностью по всем узлам с одинаковым значением?
Имет ли смысл сделать индекс на две колонки (accountId, id)?
да, будет обходить. это будет куда быстрее, чем обходить просто всё - но вполне легко напороться на ситуации, когда надо будет вытащить всё для одного аккаунта, чтобы найти одно сообщение

Dmitry
29.07.2018
11:04:59

Yaroslav
29.07.2018
11:05:09
Теоретики ничего не пишут. Они только говорят и поучают.
Кто был соавтором реализации SSI в PostgreSQL, вы не в курсе?
Без этой "бесполезной теории" PostgeSQL до сих пор был бы не-ACID СУБД (как Oracle).
И вообще, многие "теоретики" много чего написали (в смысле программ), кстати, но мы их любим не только за это. :)

Fike
29.07.2018
11:05:30

Darafei
29.07.2018
11:05:33
Подскажите, как поведет себя btree index, если будет много дубликатов
Скажем такая таблица
table chat(id bigserial, accountId int, name text)
Если сделаю индекс по колонке accountId
В случае поиска понятно, будет импрувмент, а при инсерте, апдейте, удалении базе прийдется проходить полностью по всем узлам с одинаковым значением?
Имет ли смысл сделать индекс на две колонки (accountId, id)?
лучше поискать вторую колонку всё-таки, по которой будут селекты.