Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 MS SQL Query Rewriting  [new]
Lord British
Member

Откуда: На Камчатке красиво?
Сообщений: 758
WITH YearlyCount AS
(
	SELECT YEAR(orderdate) AS orderyear,
		   COUNT(DISTINCT custid) AS numcusts
	FROM Sales.Orders
	GROUP BY YEAR(orderdate)
)
SELECT Cur.orderyear,
	   Cur.numcusts AS curnumcusts, Prv.numcusts AS prvnumcusts,
	   Cur.numcusts - Prv.numcusts AS growth
FROM YearlyCount AS Cur
		LEFT OUTER JOIN
         YearlyCount AS Prv ON Cur.orderyear = Prv.orderyear + 1;


Читаю букварь. Там черным по белому пишут. Что в случае Derived Tables, CTEs движок СУБД переписывает запрос. Какие-нибудь есть средства увидеть текст переписанного запроса, который потом выполняется?

Я правильно понимаю запрос будет переписан и кусок его будет типа

FROM Sales.Orders O1
		LEFT OUTER JOIN
         Sales.Orders O2 ON Cur.orderyear = Prv.orderyear + 1;


и еще вопрос есть ли какие-нибудь хинты для материализации запроса в определении CTE? или это принято делать руками с помощью temporary tables?
14 мар 13, 00:01    [14045237]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Query Rewriting  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
К сожалению такого (spooling) хинта пока нет.
Запрос должен быть определён максимально близко к задаче - LAG.
Где это пишут про этот "Query Rewriting"? Bullshit!
Оптимизатор строит оптимальный (с его точки зрения) план, на основе запроса. Сам запрос переписывать бессмысленно.
Запрос не будет "переписан" таким образом.
Синтаксис языка не определяет ни порядка выполнения, ни его аналогию.
Надо смотреть планы - остальное фигня.
14 мар 13, 03:29    [14045484]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Query Rewriting  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Lord British
Читаю букварь. Там черным по белому пишут. Что в случае Derived Tables, CTEs движок СУБД переписывает запрос.

Можно ссылку на букварь?
14 мар 13, 08:44    [14045689]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить