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

Добрый день! Я столкнулся с ситуацией, что Постгресс неправильно оценивает стоимость

СекСкана (или индекс скана), из-за чего неудачно переключается на SeqScan и выполняет запросы по 20-30 секунд.
Что можно почитать (а лучше починить) на эту тему?
Проявляется это на выражениях вида WHERE a=ANY($1) AND b>0
a - индексированное. b - нет.
если в $1 - мало элементов (до 10) - идет сначала индекс скан по a, остаток проверяется на выражение b.
Если в $1 - много элементов (20 и более) - то сначала проверяется выражение b (SecScanом), а потом только выражение a.
Дайте, пожалуйста, совет.

8 ответов

20 просмотров

попробуйте сделать ANALYZE TABLE

Для начала разговора о скорости запросов приведите всю информацыю из закрепа: https://t.me/pgsql/303899 Можно воспользоваться вот этим скриптом: https://t.me/pgsql/476688 Без этой информацыи такой разговор будет беспредметным.

Юра- Автор вопроса
Владимир Гришин
попробуйте сделать ANALYZE TABLE

Это может повлиять на оценку стоимости тех или иных операций Постгрессом?

Юра- Автор вопроса
Ilya Anfimov
Для начала разговора о скорости запросов приведите...

Спасибо. Если другие способы не помогут, я соберусь с духом и выполню )

Но вообзе, прямой путь — взять и самому посчитать эти оцэнки. Посмотреть в исходники по первости, да. Будет понятнее — как он это получает — из этого выведите, на чём он ошыбается.

Юра- Автор вопроса
Ilya Anfimov
Но вообзе, прямой путь — взять и самому посчитать ...

Ммм. Боюсь, что недостоин читать исходники постгресса 🥲. Хотя очень бы хотел уметь.

Юра- Автор вопроса
Владимир Гришин
попробуйте сделать ANALYZE TABLE

Огромное спасибо. Дело оказалось именно в этом. Оказалось, что в процессе создания экземпляра сервера на новой виртуалке не запускался ANALYZE, поэтому сервер не понимал, с таблицами какого размера она работает. Было предположение, что "раз включен автовакуум, то он сам всё проанализирует", но когда именно вакуум проанализирует - момент не проконтролировали. А оказалось, что "не тогда, когда надо". Большое спасибо еще раз.

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

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

У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
что за асемблер кста?
Shvabrikk Nya
19
Добрый день! Пробую отловить исключение EConvertError: function _TryTextToDouble(var DoubleVar: Extended; Text: String): Boolean; begin try DoubleVar := StrToFloat...
Kirill Filippenok
19
всем привет. реально ли понять чем в процессе занята память? delphi/linux, процесс свой
Handatros
12
А где @Grinyaha уважаемый пропал?
Am Ambrion
14
Коллеги, а не могли бы вы подсказать, как происходит оптимизация кода при выполнении кода julia? (Точнее, как управлять уровнем оптимизации, аналогично LLVM/GCC). Потому что...
Илья Гаража
5
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
This automated cryptocurrency trading system uses intelligent algorithms to buy low and sell high on leading crypto exchanges. Many users have already enjoyed significant prof...
Endu Wako
1
Сделал краткий обзор магазина из статьи и заодно там же записал инструкцию по развёртыванию. https://www.youtube.com/watch?v=8-sE1vNk95Q (чё думаете по звуку? кое-что поменял...
Andrey K
17
@kirilltitov можешь, пожалуйста, подсказать, насколько верно утверждение про уход от class к struct для swift 6? Это вот в этом PR
iMike
5
Карта сайта