Просмотр или хранимая процедура для сложных запросов?

У меня есть несколько сложный запрос с несколькими (вложенными) подзапросами, который я хочу сделать доступным для разработчиков приложений. Запрос является общим и генерирует представление с вычисленными значениями для набора наборов данных, и ожидается, что разработчику понадобятся только некоторые записи из того, что возвращает запрос (т.е. они ограничат результат для некоторого идентификатора объекта, диапазона дат или некоторого такой).

Я вижу 3 способа реализовать это:

  1. Разрешить разработчикам встраивать запрос в каждое приложение и добавлять свои собственные предложения WHERE по мере необходимости.
  2. Создайте хранимую процедуру, которая принимает в качестве параметров все условия, которые, по моему мнению, понадобятся разработчикам (в качестве аргумента можно сказать, что я могу предсказать, что потребуется в обозримом будущем), и процедура выполнит сложный запрос. и отфильтруйте его в соответствии с переданными параметрами.
  3. Реализуйте запрос как представление с несколькими подчиненными представлениями (поскольку MySQL не допускает подзапросов в представлениях) и попросите разработчиков использовать его как таблицу и использовать WHERE , чтобы каждое приложение применяло фильтры им нужны. В настоящее время я просматриваю 3 дополнительных под-представления, в основном потому, что некоторые подзапросы используются несколько раз, и выполнение их в качестве под-представлений предотвращает дублирование - иначе могло бы быть хуже ;-).

Что будет лучше с точки зрения производительности? (при условии, что вся индексация во всех случаях эквивалентна) По возможности, используйте худшие сценарии.

Как вы думаете, что будет лучше с точки зрения поддержки кода?

13
задан Guss 20 October 2011 в 14:08
поделиться