ASP.NET выполняет вычисления в хранимой процедуре или в привязке данных в Gridview - PullRequest
3 голосов
/ 05 августа 2011

Эй, у меня есть хранимая процедура, заполняющая сетку

, и в моей хранимой процедуре у меня есть два столбца, такие как

Total_Price DataType Money

и

Discount DateType decimal(18, 0)

Я хочу отобразить производный столбец с именем Actual Price, который равен

Total_Price - Discount

. Лучше ли создать этот столбец в хранимой процедуре или рассчитать нагрузку в виде таблицы?

Вот мой хранитсяпроцедура на данный момент

    SELECT     f.supplier_name,d.product_ID_key, d.product_name AS productName, d.packsize, d.tradePrice, d.IPU_code, d.EAN_code, c.discount, e.stock_indicator
FROM         aw_customer AS a INNER JOIN
                      aw_cust_contract AS b ON a.cust_ID_key = b.cust_ID_key INNER JOIN
                      aw_contract_line AS c ON b.contract_ID_key = c.contract_ID_key INNER JOIN
                      aw_product AS d ON c.product_ID_key = d.product_ID_key INNER JOIN
                      aw_stock AS e ON d.product_ID_key = e.product_ID_key INNER JOIN
                      aw_supplier AS f ON d.supplier_ID_key = f.supplier_ID_key
WHERE     (a.cust_ID_key = @customerId)
ORDER BY d.product_name

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

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

В подобных ситуациях я часто создавал SQL View, чтобы вычисления выполнялись в представлении, а затем несколько хранимых процедур могут вызывать это представление и отображать данные как:

SELECT Total_Price
       ,Discount
       ,Actual_Price
FROM [v_TableA]

http://msdn.microsoft.com/en-us/library/aa214068%28v=sql.80%29.aspx

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

http://technet.microsoft.com/en-us/library/cc917715.aspx

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

Любой способ сделать это на уровне базы данных (в SP) значительно улучшит производительность вычисления данных, но, с другой стороны, добавление нового столбца увеличивает нагрузку на сеть из-за увеличения объема данных.

Так что решайтесебе, что важнее для твоего приложения.

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