
Yaroslav
09.10.2018
15:12:00

Lestat -
09.10.2018
15:12:46

Yaroslav
09.10.2018
15:13:23

many-faced
09.10.2018
15:16:29
Парни, привет
помогите плз с запросом
Есть таблица items, столбцы - item_id, user_id
Мне нужно ответить на вопрос - является ли user_id соответствующим одновременно двум указанным item'ам.
Например,
SELECT * from items where (item_id = 1 AND user_id = 1) OR (item_id = 2 AND user_id = 1)
Я вижу две строки, как нужно. Но мне от запроса по сути нужно только TRUE или FALSE в результате.
Как такое запилить?

Google

Yaroslav
09.10.2018
15:35:53

elfiki
09.10.2018
15:40:24
а то так получается и имена никакие писать нельзя

Dmitry
09.10.2018
15:41:23
Потом расскажете как оно, общаться.

Terminator
09.10.2018
16:00:21
@potap619 будет жить. Поприветствуем!

Александр
09.10.2018
16:04:26
Всем привет! Сори что не по теме.
Срочно нужны 2 PHPшника с опытом PostgreSQL в офис (Мск). За подробностями стучите в ЛС.

many-faced
09.10.2018
16:24:27

Yaroslav
09.10.2018
16:26:41

many-faced
09.10.2018
16:27:53

Bogdan
09.10.2018
16:29:55

many-faced
09.10.2018
16:30:44

Yaroslav
09.10.2018
16:30:52

Google

Bogdan
09.10.2018
16:31:52
WEHERE можно так перепсать, кстати
SELECT * from items where ROW(item_id,user_id) in (ROW(1,1),ROW(2,1))
о это не решает проблему того тчо вам надо на выход полчить boolean, с таким я пока не сталкивался, но с in запрос будет чуть красивей

many-faced
09.10.2018
16:33:15

Alexandr
09.10.2018
16:33:24
а кастовать в селекте exists нельзя? (извините за возможно тупой вопрос)

Yaroslav
09.10.2018
16:34:13

many-faced
09.10.2018
16:34:30

Bogdan
09.10.2018
16:36:00

many-faced
09.10.2018
16:37:15

Bogdan
09.10.2018
16:38:08
можно скомбинировать с этим https://t.me/pgsql/102718
я не знал, что в списке селект можно писать EXSIST
в дургих дилаектах SQL так нельзя

Yaroslav
09.10.2018
16:39:54

Alexandr
09.10.2018
16:40:44

many-faced
09.10.2018
16:41:02
спасибо ребята

Bogdan
09.10.2018
16:46:16
я на своей базе првоерил EXISTS
почему-то выдает очень плохой план, SeqScan

Yaroslav
09.10.2018
16:48:04

Bogdan
09.10.2018
16:49:33
https://explain.depesz.com/s/7jm
https://explain.depesz.com/s/85VS
запросики
SELECT EXISTS(
select *
FROM chats
where ("accountId", channel, "channelId")
in (('d8d018cd-93fa-4c8c-8342-fb2b377ee04a' :: uuid, 'vk', 8888),
('d8d018cd-93fa-4c8c-8342-fb2b377ee04a' :: uuid, 'tg', 72))
)
и просто
select *
FROM chats
where ("accountId", channel, "channelId")
in (('d8d018cd-93fa-4c8c-8342-fb2b377ee04a' :: uuid, 'vk', 8888),
('d8d018cd-93fa-4c8c-8342-fb2b377ee04a' :: uuid, 'tg', 72))
правда таблица небольшая, dev сервер


Anton [Mgn, az09@osm]
09.10.2018
16:52:00
https://explain.depesz.com/s/7jm
https://explain.depesz.com/s/85VS
запросики
SELECT EXISTS(
select *
FROM chats
where ("accountId", channel, "channelId")
in (('d8d018cd-93fa-4c8c-8342-fb2b377ee04a' :: uuid, 'vk', 8888),
('d8d018cd-93fa-4c8c-8342-fb2b377ee04a' :: uuid, 'tg', 72))
)
и просто
select *
FROM chats
where ("accountId", channel, "channelId")
in (('d8d018cd-93fa-4c8c-8342-fb2b377ee04a' :: uuid, 'vk', 8888),
('d8d018cd-93fa-4c8c-8342-fb2b377ee04a' :: uuid, 'tg', 72))
Попробуй * поменять на 1

Bogdan
09.10.2018
16:53:08
Попробуй * поменять на 1
не помогло, попробую на более большой таблице сделать, только поднимется сервачек с такой-же таблицой но дампом с прода
на дев базе, где 8мб данных делает SeqScan а на прод базе где 3 Гб все-же через индекс ходит
наврно, это нормально ?

Google

Alexandr
09.10.2018
16:57:10
скинь план, чемы гадаем

Yaroslav
09.10.2018
16:57:21

Bogdan
09.10.2018
16:57:43
хотя не знаю, индекс весящий 719 kB бысрее обойти чем 8мб таблицу
таблицу, сейчас скину)

Yaroslav
09.10.2018
16:58:57

Bogdan
09.10.2018
16:59:02
https://pastebin.com/byijxYb6

Yaroslav
09.10.2018
17:03:35
https://pastebin.com/byijxYb6
Вот попридираюсь и скажу, что это не \d. ;)
Кстати, а почему мы обсуждаем совсем другие запросы (которые написаны не лучшим образом), а не ту задачу, что раньше?
> а планировщик берет в учет, загружена ли таблица в кеш?
Скорее нет, чем да. ;) Настроить costs соответствующим образом — задача DBA.

Bogdan
09.10.2018
17:06:16
>(которые написаны не лучшим образом)
а как лутше их написать?
Вобще я прсто решил про експерементировать подобный запрос с оригинального вопроса на своих данных
Вау, это гениально, моя таблица была не провакуумлена!
=( изза этого и план такой


Yaroslav
09.10.2018
17:10:09
дело в том, что я не через терминал подключась
Но каким-то клиентом же Вы подключаетесь? Значит, могли бы и psql...
> а как лутше их написать?
Написать что? Ваши запросы вообще не решают исходную задачу!
> Вобще я прсто решил про експерементировать подобный запрос с оригинального вопроса на своих данных
Ну так нужно же конкретные эксперименты ставить...
Вот Вы пока вроде выяснили, что IN оптимизируется в общем лучше, чем OR. ;)

Alexandr
09.10.2018
17:12:59
Какую версию pgsql по умолчанию в этом чате надо брать?
или хотя бы большинтсво на чем?
не в чает - Канале

Bogdan
09.10.2018
17:14:13

Alexandr
09.10.2018
17:15:16
кто админ, запустите голосование, чтоб иметь представление. спс)

Anton [Mgn, az09@osm]
09.10.2018
17:24:12

Andrey
09.10.2018
18:16:03
Всем привет, помогите...(((
win10, postgresql 10.5
сервер postgres работает, ODBC-драйвер стоит, строка подключения такая
connectionString="Driver={PostgreSQL UNICODE};Server=localhost;Port=5432;Database=test;Uid=postgres;Pwd=***;"
При попытке поключиться через visual studio пишет
"Не удалось вызвать служебную программу подключения драйвера ODBC."
IIS возвращает вот что
[OdbcException (0x80131937): ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified]
Второй день бьюсь, обгуглися уже (((

Google

Yaroslav
09.10.2018
18:23:23

Andrey
09.10.2018
18:25:12

Bogdan
09.10.2018
18:25:37

Yaroslav
09.10.2018
18:28:08
А то, что у Вас название драйвера в строке подключения ({PostgreSQL UNICODE}) не совпадает с Вашим screenshot — точно допустимо (я просто не в курсе)?

Andrey
09.10.2018
18:32:10

Pavlo
09.10.2018
18:51:29
Слово user зарезервированое?
Мда и как я смог сделать таблицу с етим именем)
Теперь не могу удалить

Bogdan
09.10.2018
18:58:32

Pavlo
09.10.2018
18:59:18

Petr
09.10.2018
19:51:13
Господа, пытливые умы спрашивают: "а какую книгу по реляционным бдшкам почитать?" и тут я призадумался, что в своё время брал информации с миру по нитки, и какого-то конкретного источника припомнить не могу. В связи с этим вопрос:
Кто какую книгу посоветует по вышеуказанному?

Yaroslav
09.10.2018
20:00:20
Дейта, например... с осторожностью. ;)
В общем, смотря зачем.

Petr
09.10.2018
20:22:32
Дейта, например... с осторожностью. ;)
В общем, смотря зачем.
Люди уже понимают азы (вплоть до отношений многие-ко-многим, проектированию типичных структур бд, индексации базовой (без особого понятия как работает под капотом) и т.д.), но хотят углубиться
Вот черт знает что им посоветовать, чтобы "для общего развития"

Maksim
09.10.2018
20:37:12

Petr
09.10.2018
20:38:09

Maksim
09.10.2018
20:39:09
спасибо!
Велкам) По внутренностям одна из лучших что видел

Anton
09.10.2018
22:07:20
подскажите, есть ли легкий способ реализовать cursor по uuid?
т.е. вместо числового offset можно было передать uuid последней записи, и выведет записи, которые должны при выборке следовать после

Сергей
09.10.2018
22:34:08

Anton
09.10.2018
22:34:32

Alexandr
09.10.2018
22:34:33
Встроенного Нет. Только свою функцию писать

Сергей
09.10.2018
22:35:08

Terminator
10.10.2018
03:27:08
@simaregele будет жить. Поприветствуем!

Google

Terminator
10.10.2018
06:03:55
@minimum5char будет жить. Поприветствуем!

Bogdan (SirEdvin)
10.10.2018
06:55:31
немного странный вопрос, подскажите, как в postgresql увеличить размер wal-сегмента? гуглю и туплю пока

Andrey
10.10.2018
07:02:34

Bogdan (SirEdvin)
10.10.2018
07:03:23
Оу, вот это печально. Хотелось уменьшить количество записей в кластер при archive команде

Andrey
10.10.2018
07:03:30
./configure --with_wal_segsize

Kirill
10.10.2018
07:14:44
А вообще реально кому-то помогло изменение размера wal? Есть у кого-то success story?

Bogdan (SirEdvin)
10.10.2018
07:33:59
У нас просто glusterfs и большое количество файлов делает ему больно)

Nikolai
10.10.2018
07:35:21
у нас эта скотина ещё и течет по памяти на клиентах

Dmitry
10.10.2018
09:17:03

Bogdan (SirEdvin)
10.10.2018
09:17:29