powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как оптимизировать время выполнения скрипта?
6 сообщений из 31, страница 2 из 2
Как оптимизировать время выполнения скрипта?
    #38829096
its_me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
up
...
Рейтинг: 0 / 0
Как оптимизировать время выполнения скрипта?
    #38829211
кхм
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
its_me,
если не можете переписать запрос -- перепишите планировщик пеже.

варианты не переписывая:

вариант хинтовать -- не подходит -- хинты в тексте.
вариант отэнейблить какой-то способ выполнения -- ?
ну и рассмотреть совсем грязные хаки -- попробовать писать самому в pg_statistic какую-то обратимую муть, перед выполнением запроса


ах да:
варианты погуманнее -- подменять на лету дефолтные операторы, используемые в индексном сравнении, -- если запрос -- это текст, а не распарсенная структура типа вьюхи. Т.е., в вашем случае, забить LIKE каким- то псевдолайком (что- то подобное удружили бортунов сотоварищи в intarray-е, правда не на лету, а раз и навсегда, но заменив дефолтные операторы сравнения массивов своими, из-за чего ихрядная часть ф-й, работающая с одним оператором, вылетает на лету). Т.е. ставим intarray -- переписываем полбазы. сносим intarray -- переписываем по новой)

Ещё проще -- на ту же тему, -- перед исполнением сделать свой "upper" -- обертку в своей схеме -- дефолтным (в сёрч-пасе поставить свою ф-ю раньше). В индексе то явно использован pg_catalog.upper, а у вас в запросе, с момента подмены -- "совсем другая ф-я".
этим вы предупредите возможность использования индекса.
...
Рейтинг: 0 / 0
Как оптимизировать время выполнения скрипта?
    #38829376
its_me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кхмits_me,
если не можете переписать запрос -- перепишите планировщик пеже.

варианты не переписывая:

вариант хинтовать -- не подходит -- хинты в тексте.
вариант отэнейблить какой-то способ выполнения -- ?
ну и рассмотреть совсем грязные хаки -- попробовать писать самому в pg_statistic какую-то обратимую муть, перед выполнением запроса


ах да:
варианты погуманнее -- подменять на лету дефолтные операторы, используемые в индексном сравнении, -- если запрос -- это текст, а не распарсенная структура типа вьюхи. Т.е., в вашем случае, забить LIKE каким- то псевдолайком (что- то подобное удружили бортунов сотоварищи в intarray-е, правда не на лету, а раз и навсегда, но заменив дефолтные операторы сравнения массивов своими, из-за чего ихрядная часть ф-й, работающая с одним оператором, вылетает на лету). Т.е. ставим intarray -- переписываем полбазы. сносим intarray -- переписываем по новой)

Ещё проще -- на ту же тему, -- перед исполнением сделать свой "upper" -- обертку в своей схеме -- дефолтным (в сёрч-пасе поставить свою ф-ю раньше). В индексе то явно использован pg_catalog.upper, а у вас в запросе, с момента подмены -- "совсем другая ф-я".
этим вы предупредите возможность использования индекса.


я смог разобрать слово "пеже" и то наверно. Может пример из самого простого способа, хотя бы краткий...?
...
Рейтинг: 0 / 0
Как оптимизировать время выполнения скрипта?
    #38829426
кхм
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
its_me,

что-то на тему

Код: sql
1.
2.
3.
4.
CREATE function public.upper(anyelement) AS 
'SELECT pg_catalog.upper($1) '
language sql;
SET /*local*/ "search_path" TO '$user,public,pg_catalog';-- вам нужно будет это делать в моменте


далее -- в этом же сеансе делаем EXPLAIN ANALYZE ваших sql-текстов. и убеждаемся, что они таки не умеют [пока] пользоваться индексом, использующим pg_catalog.upper(), т.к. с т.з. текста это public.upper().

-- заворачиваем запрос (тут у вас проблема -- вы же его даже переписать не умеете, чем вы его заворачивать будете) в нечто, делающее за вас это самое set local -- профит.

т.е. вопрос -- где вы таки можете вмешаться ?
то ли в клиенте что-то сделать, то ли роли для отдельных запросов поменять (в том же клиенте) , а уж для ролей разделить пути и т.п., то ли ещё где-то.
если нигде -- то просьба к модератору вас зобанеть.
...
Рейтинг: 0 / 0
Как оптимизировать время выполнения скрипта?
    #38829763
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
its_meup

не меняя запросы в приложении вы эту проблему не решите...
именно по этому приложени которые потом не предполагается менять с базой должны по ТЗ работать через хранимки создавая слой абстракции который можно менять не меняя код приложения.

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Как оптимизировать время выполнения скрипта?
    #38829959
its_me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вмешаться могу только в базу данных - банить не надо. Думаю вопрос исчерпан, всем спасибо.
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как оптимизировать время выполнения скрипта?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]