У меня несколько сложный запрос с несколькими (вложенными) подзапросами, которые я хочу сделать доступными для разработчиков приложений. Запрос является общим и генерирует представление с вычисленными значениями по набору наборов данных, и разработчику, как ожидается, понадобятся только некоторые записи из того, что возвращает запрос (т.е. Они ограничивают результат для некоторого идентификатора объекта или диапазона дат или некоторых например).
Я вижу три способа реализовать это:
- Пусть разработчики внедряют запрос в каждое приложение и при необходимости добавляют свои собственные предложения
WHERE
. - Создайте хранимую процедуру, которая принимает в качестве параметров все условия, которые, как мне кажется, нужны разработчикам (ради аргумента можно сказать, что я могу предсказать, что будет необходимо в обозримом будущем), и процедура будет запускать сложный запрос и фильтровать его в соответствии с переданными параметрами.
- Реализовать запрос как представление с несколькими подзонами (поскольку MySQL не разрешает подзапросы в представлениях), и разработчики используют это как таблицу и используют
WHERE
, чтобы каждое приложение применяло нужные им фильтры. В настоящее время я рассматриваю 3 дополнительных подзадача, главным образом потому, что некоторые подзапросы используются несколько раз и делают их в качестве подзадач, что предотвращает дублирование - в противном случае это могло бы быть хуже: -).
Что будет лучше работать? (при условии, что все индексирование эквивалентно во всех случаях). Идите для сценариев наихудшего случая, если вы можете.
что будет лучше в условиях обслуживания кода, как вы думаете?