У меня есть таблица Sheet1 $, которая содержит 616 записей.У меня есть другая таблица, Rates $, которая содержит 47880 записей.Тарифы содержат частоту ответов для данной записи на листе в течение 90 дней с даты отправки.В течение всех 90 дней отношения записей RTS общий ответ ВСЕГДА 1 (100%)
Пример:
Sheet1$: Record 1, 1000 QTY, 5% Response, Mail 1/1/2009
Rates$: Record 1, Day 1, 2% Response
Record 1, Day 2, 3% Response
Record 1, Day 90, 1% Response
Record N, Day N, N Response
Итак, я написал представление, которое принимает эти таблицыи соединяет их справа от ставок, чтобы расширить данные, чтобы я мог выполнить некоторую математику, чтобы получать доход в день для любой данной записи.
SELECT s.[Mail Date] + r.Day as Mail_Date, s.Quantity * s.[Expected Response Rate] * r.Response as Pieces, s.[Bounce Back Card], s.Customer, s.[Point of Entry]
FROM Sheet1$ as s
RIGHT OUTER JOIN Rates$ as r
ON s.[Appeal Code] = r.Appeal
WHERE s.[Mail Date] IS NOT NULL
AND s.Quantity <> 0
AND s.[Expected Response Rate] <> 0
AND s.Quantity IS NOT NULL
AND s.[Expected Response Rate] IS NOT NULL);
Поэтому я сохраняю это как представление с именем Test_Results.Используя SQL Server Management Studio, я выполняю этот запрос и получаю в результате 211 140 записей.Прошедшее время составило 4,121 секунды, вост.Стоимость поддерева была 0,751.
Теперь я запускаю запрос к этому представлению, чтобы агрегировать количество штук за каждый день.
SELECT Mail_Date, SUM(Pieces) AS Piececount
FROM Test_Results
GROUP BY Mail_Date
Возвращает 773 строки, и выполнение заняло всего 0,452 секунды!1.458 Est.Стоимость поддерева.
Мой вопрос, с более высокой оценкой, как это выполнялось НАСТОЛЬКО быстрее, чем само исходное представление ?!Я бы предположил, что часть может быть в том, что она возвращает строки в студию управления.Если это так, как бы я посмотрел истинную стоимость этого запроса без учета обратной связи?