Вручную создавая ваши запросы с помощью Dynamic SQL, может быть, мы хуже по многим причинам (расширяемость, ремонтопригодность, повторное использование), но их производительность ограничена только вашими способностями написания SQL-запросов. Это означает, что в некоторых случаях это будет быстрее, чем использование модели Cognos. Для использования динамического SQL нет недостатков скорости.
Это, как говорится, вам не хватает преимуществ Cognos, если вы не используете модель. Ваша способность поддерживать согласованность, делать широкие изменения без перезаписи отчетов и быстро создавать новые отчеты будет сильно уменьшена с помощью Dynamic SQL.
Если ваша среда мала, динамический sql может удовлетворить ваши потребности. Особенно для нечетных одноразовых отчетов, которые используют таблицы и отношения, которые имеют мало общего с вашими другими отчетами. Или, если есть определенный способ, которым вы хотите принудительно использовать индексы, это может быть достигнуто с помощью динамического sql.
Редактировать: Важно отметить, что критерии, установленные в фильтрах Report Studio, не будут передаваться в ваши запросы Dynamic SQL до тех пор, пока данные не будут восстановлены. Для больших наборов данных это может быть крайне неэффективно. Чтобы передать критерии в ваш Dynamic SQL из ваших приглашений, используйте #prompt ('yourPromptVariableNamehere') # или #promptmany ('yourMultiSelectPromptVariablehere') #. Это эмпирическое правило, запустите свой динамический SQL-запрос за пределами cognos и посмотрите, сколько данных возвращается. Если у вас есть гигантский запрос о продаже, который нужно как минимум фильтровать по дате или ветви, поместите подсказку на странице приглашения, чтобы заставить пользователя выбрать конкретную дату/период/диапазон дат/ветвь/и т. Д. в свои подсказки и добавьте критерии в свой динамический SQL-запрос с синтаксисом prompt/promptmany. Запросы могут по-прежнему использоваться в качестве регулярных фильтров внутри запросов Report Studio, но все эти критерии фильтруются ПОСЛЕ того, как результирующий набор возвращается из базы данных, если вы используете динамические запросы без подсказки/promptmany.
Множество негативов для меня. Вы не можете обеспечить согласованность. Что мешает мне присоединиться к тем же таблицам совершенно по-другому от вас? Обслуживание - это кошмар. Если что-то меняется в вашей базе данных, вы должны изменить его в каждом отдельном отчете, вместо того, чтобы менять его один раз в модели.Я считаю, что это также помешает вам воспользоваться некоторыми из более новых функций в Cognos (DQM, динамические кубы). – Andrew
@Andrew - Спасибо за комментарий. Я полностью согласен с вами в вопросах обслуживания, но я действительно просто смотрю на это с точки зрения производительности и есть ли недостатки в производительности при использовании динамического SQL. –
Если есть проблемы с производительностью, они должны быть рассмотрены в модели. Cognos определяет, как сгенерировать свой SQL на основе создаваемой модели, поэтому, если что-то не так, вы, вероятно, захотите потратить некоторое время на выявление и устранение проблем в модели. Выполнение того, что вы предлагаете, может нанести вред дальнейшему успеху, поскольку Cognos затем выдаст вызовы метаданных для извлечения деталей каждого столбца, который вы запрашиваете при каждом выполнении, и, как сказал Эндрю, некоторые функции не удастся. – chsh