Параметры оптимизации для набора аналогичных функций Oracle - PullRequest
0 голосов
/ 10 августа 2011

У меня есть три пользовательских функции, которые делают очень похожие вещи: они извлекают разные данные из одного и того же, довольно сложного набора объединений - генерация объединенной таблицы занимает много времени - и обычно все вызываются в одном и том же*.Это, очевидно, неэффективно, и я хотел бы улучшить производительность, но как лучше всего это сделать?

  • Создать материализованное представление сложного объединения, охватывающее все параметры, и просто обратиться к этомув каждой из функций (или просто опустить функции)1010 *

    Первый вариант кажется новичку, как я, вероятно, лучшим решением;но, очевидно, у него есть недостаток - создание довольно большого материализованного представления, которое требует обслуживания (поэтому оно обновляется по мере необходимости);хотя этот MV может быть полезен в другом месте ... Второй вариант будет немного взломать;но есть ли что-то еще, что я не учел?

Ответы [ 2 ]

1 голос
/ 10 августа 2011

Я бы предпочел вообще опустить функции и переписать запросы так, чтобы функции не использовались. Любая функция, которая выбирает данные (особенно с использованием «сложного соединения»), является верным способом замедлить ваш запрос, поскольку функция должна выполняться один раз для каждой строки, обрабатываемой (даже не обязательно возвращаемой) основным запросом, возможно, 1000 с 100 000) раз.

0 голосов
/ 10 августа 2011

Я бы выбрал вариант 2, если честно, если вы действительно не хотите материализованного представления Вы можете привести функцию к таблице, чтобы выбрать ее как обычно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...