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

Откуда:
Сообщений: 10
Добрый день!

Хотелось бы услышать опытных пользователей (не просто теоретиков).
Есть таблица "Документы" и соответственно "СоставДокумента". Задача проста: вывести журнал документов с суммой документа. В каком случае, с точки зрения производительности, SQL Server ведет себя лучше, что ему "легче" делать?
1. INNER JOIN, SUM(...)
2. скалярная функция get_docsum(@docid int)
?
Может быть какие еще нюансы...
Ну про вариант кеширования суммы документа в таблице "Документы" речь пока не идет :)
20 мар 13, 14:43    [14072324]     Ответить | Цитировать Сообщить модератору
 Re: Производительность INNER JOIN vs FUNCTION  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
sql001
Ну про вариант кеширования суммы документа в таблице "Документы" речь пока не идет :)
а про вариант с индексированной вьюхой?
20 мар 13, 14:46    [14072340]     Ответить | Цитировать Сообщить модератору
 Re: Производительность INNER JOIN vs FUNCTION  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
sql001,

забудьте про скалярные функции - это почти наверняка самый медленный вариант из всех.
20 мар 13, 14:57    [14072413]     Ответить | Цитировать Сообщить модератору
 Re: Производительность INNER JOIN vs FUNCTION  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
sql001
?


OUTER APPLY (SELECT SUM() ...)
20 мар 13, 15:00    [14072432]     Ответить | Цитировать Сообщить модератору
 Re: Производительность INNER JOIN vs FUNCTION  [new]
sql001
Member

Откуда:
Сообщений: 10
Хм... +1 действительно вариант-обертка...
Но опять же внутри VIEW запихать INNER JOIN, SUM() или функцию? После создания индексированного VIEW mssql начнет хранить результат так же как и таблицу... и соответственно при изменении исходных данных начнет менять этот результат... в этом месте не правильно сформировав запрос можно словить тормозов вместо повышения производительности. Или я не прав?
20 мар 13, 15:02    [14072454]     Ответить | Цитировать Сообщить модератору
 Re: Производительность INNER JOIN vs FUNCTION  [new]
sql001
Member

Откуда:
Сообщений: 10
iap
sql001,

забудьте про скалярные функции - это почти наверняка самый медленный вариант из всех.


Вот это уже точнее :)
20 мар 13, 15:04    [14072463]     Ответить | Цитировать Сообщить модератору
 Re: Производительность INNER JOIN vs FUNCTION  [new]
sql001
Member

Откуда:
Сообщений: 10
pkarklin
sql001
?


OUTER APPLY (SELECT SUM() ...)


Спасибо за дельный "подзатыльник"... надо не просто читать What's new а еще и пользовать эти плюшки...
20 мар 13, 15:05    [14072480]     Ответить | Цитировать Сообщить модератору
 Re: Производительность INNER JOIN vs FUNCTION  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
sql001
pkarklin
пропущено...


OUTER APPLY (SELECT SUM() ...)


Спасибо за дельный "подзатыльник"... надо не просто читать What's new а еще и пользовать эти плюшки...
И будет неизбежный Nested Loop Join с "красивеньким" Index Spool впридачу.
20 мар 13, 21:37    [14074438]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить