извинения, так как это может быть очень глупый вопрос - я работаю с курсором, он соединяет временную таблицу из примерно 697K строк и функцию, которая возвращает 78K строк. (это я должен добавить, это улучшение, которое раньше было хуже) . Курсор проходит и сопоставляет два значения в обеих «таблицах» и обновляет третье. Это займет около 6 часов. Что абсурдно. Мы пытаемся найти способы сделать это более эффективным.
Любые и все предложения приветствуются. Но мой вопрос такой -
Похоже, что возвращаются данные, которые выглядят следующим образом (во многих случаях пустая информация). Могу ли я ограничить код, чтобы сказать, где ... данные не равны нулю ... но это не значит, что они возвращаются с нулем, пустые / несуществующие строки Я думаю, что если есть способ исключить такие строки, мы можем ограничить наш пул данных. Но я не совсем знаю, что это значит.
declare @season int = 21
DECLARE @match varchar(55)
declare @perf_no int
declare @order_dt datetime
DECLARE @price CURSOR
SET @price = CURSOR FOR
SELECT distinct match_criteria, perf_no, order_dt
FROM #prices
OPEN @price
FETCH NEXT
FROM @price INTO @match, @perf_no, @order_dt
WHILE @@FETCH_STATUS = 0
BEGIN
select @match, @perf_no, @order_dt, x.price as 'amount'
from #prices p
join dbo.[LFT_GET_PRICES_Seasonal] (@season, @order_dt) x on p.perf_price_type = x.perf_price_type and p.zone_no = x.zone_no
where match_criteria = @match and perf_no = @perf_no
FETCH NEXT
FROM @price INTO @match, @perf_no, @order_dt
END
CLOSE @price
DEALLOCATE @price
Вот пример того, что #prices и # возвращает наша функция.
цена
pkg_no perf_no zone_no price_type order_dt price perf_price_type match_criteria
12 144 2707 1073 2018-09-03 00:00:00.000 NULL 115769 O5716788P1517Z2707
12 123 2707 1073 2018-09-03 00:00:00.000 NULL 115840 O5716788P1517Z2707
12 887 2707 1073 2018-09-03 00:00:00.000 NULL 115521 O5716788P1517Z2707
Функция:
perf_price_type zone_no price min_price enabled editable_ind
115521 2678 12.00 12.00 Y N
115521 2679 61.00 61.00 Y N
115521 2680 41.00 41.00 Y N
Курсор обновляет цену в таблице #prices на основе цены функции. (мы использовали курсор, чтобы ограничить его только определенными характеристиками / ограниченными критериями). Но я открыт для предложений. и совет относительно того, как улучшить это.