Я хотел бы разрешить выполнение функции PL/PGSQL (my_function
) только в том случае, если его аргумент (my_table.x
) относится к предопределенному интервалу (например, [100,1000]) ,Избегайте выполнения некоторых функций PL/PGSQL путем перезаписи запроса
Давайте рассмотрим следующий пример запроса:
(д) SELECT * FROM my_table WHERE my_function(mytable.x);
Я хотел бы этот запрос автоматически переписывает себя, чтобы проверить, принадлежит ли mytable.x
к интервалу [100,1000]:
(q ') SELECT * FROM my_table WHERE (my_table.x BETWEEN 100 AND 1000) AND my_function(my_table.x);
Команда EXPLAIN ANALYSE
показывает, что второй запрос действительно быстрее первого.
Как изменить план выполнения запроса, чтобы автоматизировать процесс перезаписи запросов (q в q ')? Где можно хранить метаданные относительно интервала [100,1000], связанного с my_function
?
Благодаря авансовым,
Томас Girault
помощь мне нужна будет помощь проект о интеграции нечеткой логики в PostgreSQL: [https://github.com/postgresqlf/PostgreSQL_f/] [ PostgreSQLf]
Что делает моя_функция? – dezso
Функция 'my_function' вызывает следующую функцию CREATE OR REPLACE FUNCTION низкий (VAL двойной точности) возвращает двойной точности AS $ ТЕЛА $ \t ВЫБОР trapezoidal_fuzzy_predicate ($ 1, 0,0,1000,100000); $ ТЕЛО $ ЯЗЫК sql IMMUTABLE –