
Yaroslav
18.07.2018
16:31:21

Tolya
18.07.2018
16:50:26

Google

Tolya
18.07.2018
16:51:47
условие
create index idx_bar_bad
ON table (bad_func(dar), bar) WHERE ((baz) = 'SOME__NONSELECTIVE_STATUS');

Yaroslav
18.07.2018
16:54:33

Vladimir
18.07.2018
16:55:24
Привет! Есть таблица
create table groups (
id integer,
parents int[]
);
Вопрос - как найти все строки, в которых последний элемент равен заданному значению?
Пробовал
SELECT *
FROM groups
where parents[-1] = 3;
- не работает.
SELECT *
FROM groups
where parents[array_upper(parents, 1)] = 3;
- работает, но не уверен, что использует GIN-index
Есть какой-то простой опреатор вроде @> ?

Tolya
18.07.2018
17:11:03
при этом для составного индекса не обязательно наличие обоих полей оказалось, работает даже если одно из двух в условии запроса есть
в таком случае должна статистика починиться, как построится индекс по полю без where условия
а не вспомните, случайно, где про эту тонкость прочитать можно?

Yaroslav
18.07.2018
17:16:22
а не вспомните, случайно, где про эту тонкость прочитать можно?
src/backend/utils/adt/selfuncs.c
* Has it got stats? We only consider stats for
* non-partial indexes, since partial indexes probably
* don't reflect whole-relation statistics; the above
* check for uniqueness is the only info we take from
* a partial index.
Такие дела. :(

Vladimir
18.07.2018
17:18:22
на маленькой табличке seq scan
большую не делал пока

Yaroslav
18.07.2018
17:19:24

Vladimir
18.07.2018
17:23:13
спасибо. навскидку нет такого оператора, чтобы не использовать array_length?

Google

Yaroslav
18.07.2018
17:28:22

Pavlo
18.07.2018
17:51:44
Всем прив, как можно сделать авто счетчик исли повторилась оприделеная строка? (пример на фото)

Yaroslav
18.07.2018
18:16:18

Denis
18.07.2018
18:18:11

Pavlo
18.07.2018
18:26:21

Alexandr
18.07.2018
18:29:07

Pavlo
18.07.2018
18:29:14

Yaroslav
18.07.2018
18:30:09
1.2.3.4...
То есть, всё же id? Как-то так:
SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY id) AS post
FROM t
ORDER BY id;

Pavlo
18.07.2018
18:31:08

Denis
18.07.2018
18:33:10
Чтоб ты делал еслиб пользователь удалили?
Искал с максимальным значением и удалял строку?
+ Ещё замечание в том что пользователь не ссылка

Pavlo
18.07.2018
18:34:03

Alexandr
18.07.2018
18:35:40
Это корявое проектирование, которое стрельнет обязательно

Pavlo
18.07.2018
18:36:08

Denis
18.07.2018
18:36:09
Ну у тебя в почте ссылка на того кто его создал
А потом
Селект Каунт
Фром таблица_постов
Веа ссылка на пользователя = айди пользователя

Alexandr
18.07.2018
18:36:14
Делайте отдельно посты и отдельно таблицу для счётчика

Denis
18.07.2018
18:36:14
Сори за лень

Pavlo
18.07.2018
18:36:35

Google

Alexandr
18.07.2018
18:36:44
Заполняйте по триггеру например

Denis
18.07.2018
18:38:41
Заполняйте по триггеру например
Ну это как транзакции к примеру в банковских системах
Они не хранят значения( может и хранят, но пересчитывают)
А формируют баланс по сумме приходов и вычетов

Tolya
18.07.2018
19:17:30
В итоге во всем был виноват частичный индекс -> отсутствие статистики по целевому полю
Yaroslav спасибо за помощь :)

Yaroslav
18.07.2018
19:23:23

Alexey
19.07.2018
04:52:38
Не сталкивались с такой странной темой, когда по непонятной, или понятной причине пропал replication slot с AWS RDS? Вот был-был - и нету. Дропнулся. Слот явно не удаляли, logical_replication не меняли. Воспроизвести, ессно не удалось.

Богдан
19.07.2018
07:20:38
Господа, а как правильно сделать запрос, например если не найшло по одному условию, то что бы искало по другому условию? Как бы OR не совсем подходит, потому что тогда может выбраться 2 записи, а здесь именно важен приоритет?
идея только сделать с 2 запросами

Denis
19.07.2018
07:22:33
Нужно сделать OR (второе условие AND NOT первое условие)

Yaroslav
19.07.2018
07:23:06

Богдан
19.07.2018
07:23:22
сейчас пример сделаю

elfiki
19.07.2018
07:23:36

Denis
19.07.2018
07:23:52
Да, верно, спасибо.

Misha
19.07.2018
07:23:54
where (a = true and b = false) or (a =false and b = true)

elfiki
19.07.2018
07:26:49

Богдан
19.07.2018
07:27:08
вот примерно такой алгоритм сейчас
select * from users where chat_id = '5554545'
-- Если Ненашло по первому запросу ищем по второму
select * from users where username = 'alex'

elfiki
19.07.2018
07:29:38
вообще одна
Ну тогда в выборку добавить условие, что типа если выполняется первое условие, то вернуть 1, иначе 2 отсортировать по нему и лимит 1
В самом запросе оба условия через or поставить

Google

Богдан
19.07.2018
07:32:04
идея такая было, но к примеру может быть такое вариант, что во втрому условию chat_id к примеру будет меньше, и тогда если я по нему сделаю сортировку, то место того что бы выбрало первому условию, выберет по втрому

Admin
ERROR: S client not available

elfiki
19.07.2018
07:32:28
Не

Богдан
19.07.2018
07:36:03
хм ... может я не понял как сделать запрос? сделал вот так
select * from users where chat_id = '5527' OR username = 'aleks' order by chat_id

elfiki
19.07.2018
07:36:18
SELECT *,
CASE
WHEN chat_id=‘1111111’ THEN 1
ELSE 2
END
AS pr
FROM users where chat_id=‘111111’ or username=‘alex’ order by pr limit 1

Богдан
19.07.2018
07:37:01

TEH3OP
19.07.2018
07:38:52
Низкий поклон вам, линуксоиды.
Не подскажете хороший набор шаблонов+скриптов для мониторинга pgsql в zabbix.

Богдан
19.07.2018
07:39:42

Данил
19.07.2018
07:50:23
Добрый день. Как правильно можно завершать свой же тяжёлый запрос к Бд? Права у пользователя минимальные и позволяют только select операции

Yaroslav
19.07.2018
08:10:45

Данил
19.07.2018
08:11:33

Yaroslav
19.07.2018
08:11:41

Данил
19.07.2018
08:13:28

Andrey
19.07.2018
08:14:57

Yaroslav
19.07.2018
08:15:01

Данил
19.07.2018
08:15:03

Yaroslav
19.07.2018
08:15:24

Google

Данил
19.07.2018
08:15:51

Yaroslav
19.07.2018
08:17:01

Данил
19.07.2018
08:20:45

elfiki
19.07.2018
08:21:22
свои же вроде и так можно без прав

Данил
19.07.2018
08:22:31
А как узнать pid или иной идентификатор по которому убивать процесс?

elfiki
19.07.2018
08:25:55
pg_stat_activity

Yaroslav
19.07.2018
08:30:22

Данил
19.07.2018
08:32:13

Yaroslav
19.07.2018
08:32:51

Данил
19.07.2018
08:36:12