2014-12-05 2 views
1

Уважаемые администраторы и администраторы stackoverflow:Выполняет ли сортировка Tablix в RDL лучше, чем использование ORDER BY в хранимых процедурах?

Здравствуйте, приятный день для всех.

Я занимаюсь разработкой RDL (и он использует хранимую процедуру в SQL Server 2008 R2 для получения данных) довольно давно в этой компании, над которой я работаю. Наш предыдущий администратор базы данных - тот, кто проверил мою хранимую процедуру и советует мне внести некоторые изменения, если моя хранимая процедура нуждается в улучшении. И через год он ушел в отставку. :-(

И пришел эти новые админы базы данных, теперь он хочет, чтобы пересмотреть все мои хранимые процедуры, что. Тот RDL, который использует хранимую процедуру, имеющую ORDER BY положения. :-(

Он сказал, что сортировка должно быть сделано в отчете/RDL, потому что он каким-то образом выгрузит некоторые издержки в базе данных, что, в свою очередь, заставит мой отчет быстрее генерировать данные.

Мой вопрос сейчас, правильно ли он? читал, я мог читать, чтобы сопровождать то, что он советовал? Или это то, что он посоветовал просто простое эмпирическое правило, с которым я не практиковал? (Как он сказал, нет предложения ORDER BY, и никакого форматирования (пример по датам, времени и т. д.) в хранимых процедурах, все форматирование и сортировка в RDL. Я все еще на полпути, чтобы пойти на мои изменения, но я хочу узнать больше о том, что он продолжает инструктировать. Пожалуйста, порекомендуйте.

Благодарим вас и многое другое. :-)

Преданный Ваш

Марк Шквал

+0

Это в основном сводится к «что лучше, сортировка на клиенте или сервере?» Посмотрите на это: http://stackoverflow.com/questions/326634/sorting-on-the-server-or-on-the-client – Alejandro

ответ

0

Как я уже отметил, сортировочный вопрос сводится к сортировке в стороне клиента или на стороне сервера. Связанный вопрос, вероятно, может дать более проницательное обсуждение каждого варианта, но, короче говоря, нет четкого ответа на него, у каждого есть компромиссы, и то, что вы жертвуете, в конечном счете зависит от вашего конкретного варианта использования.

Как вы упоминаете «RDL», я полагаю, вы имеете в виду службы отчетов SQL Server, верно? Если это так, то ситуация другая, так как «сервер» и «клиент» фактически являются двумя разными программами, запущенными, вероятно, на одном компьютере (исправьте меня, если я ошибаюсь).

В основном, делая это на сервере (то есть ORDER BY), механизм БД эффективно работает больше, как говорит ваш администратор баз данных. Хорошо, что SQL имеет больше инструментов для обеспечения более быстрого ответа, чем клиент (индексы, статистика, предположительно более быстрый процессор и т. Д.), А для таких операций, как пейджинг и TOP, это почти всегда лучший выбор в БД, поскольку клиент необходимо получить гораздо больше данных, чтобы обеспечить результат.

Сортировка клиентской стороны имеет преимущество в распределении сортировки. Когда многие клиенты используют БД вместе, чтобы их сортировка могла облегчить нагрузку на сервер на сервере (это, скорее всего, причина, лежащая в основе рассуждений вашего DBA). Кроме того, он позволяет клиентам эффективно повторно сортировать данные по пользовательскому действию, не возвращаясь снова на сервер (кроме случаев, когда пейджинг задействован).

Что касается формирования, которое вы упоминаете, здесь я склонен согласиться с администратором баз данных. В большинстве случаев формирование лучше обрабатывается на клиенте, а обслуживается БД, потому что оно специфично в том, как оно будет отображаться в каждом месте. Наличие дат в формате хранимой процедуры и таких средств, связанных с этим конкретным отчетом, что означает, что вы не можете легко повторно использовать его для других целей.Инструменты на стороне клиента обычно лучше отображают вещи для конечного пользователя и могут даже учитывать такие вещи, как локализация (десятичные разряды, упорядочение формата даты, paddings и т. Д.), Которые, хотя это возможно сделать на сервере, обычно включают в себя больше работать и даже дублировать функциональность форматирования.

+0

Я хотел бы поблагодарить вас за ссылку, которую вы дали. Из того, что я прочитал, мнения по сортировке на сервере или в отчете _ (да, я имею в виду SQL Server Reporting Services, спасибо, сэр) _ варьируется от одного человека к другому, и, как вы сказали, у каждого есть компромиссы. По крайней мере, я знаю, что каким-то образом кто-то (все же) согласится со мной, что сортировка в хранимой процедуре в порядке. :-) Но поскольку он сказал, что это лучше, я должен внести все изменения, необходимые во все мои хранимые процедуры. – MarkSquall