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

Откуда:
Сообщений: 13
Какими способами можно оптимизировать запрос ? схема northwind

SELECT ordr.OrderID,ordr.CustomerID,cust.CompanyName,ordr.ShippedDate,prod.ProductName
FROM dbo.Orders ordr
INNER JOIN dbo.[Order Details] ord ON ord.OrderID = ordr.OrderID
INNER JOIN dbo.Products prod ON ord.ProductID = prod.ProductID
INNER JOIN dbo.Customers cust ON ordr.CustomerID = cust.CustomerID
INNER JOIN dbo.Employees empl ON ordr.EmployeeID = empl.EmployeeID
WHERE ordr.OrderDate >= N'1996-01-01 00:00:00'
30 май 19, 20:53    [21898007]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36689
Критерии оптимальности какие?
30 май 19, 22:31    [21898072]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
fkthat
Member

Откуда:
Сообщений: 1872
По-моему запрос настолько простой, что его оптимизировать никак. Разве что проверить, что все индексы нужные есть и, м.б. поставить хинт nolock (либо поместить в dirty read транзакцию), если это возможно.
30 май 19, 22:59    [21898082]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
aleks222
Member

Откуда:
Сообщений: 849
fkthat
По-моему запрос настолько простой, что его оптимизировать никак. Разве что проверить, что все индексы нужные есть и, м.б. поставить хинт nolock (либо поместить в dirty read транзакцию), если это возможно.

Садись, неуд.

Ну.... индексированное представление будет быстрее.
31 май 19, 06:10    [21898148]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2959
nc1318
Какими способами можно оптимизировать запрос ? схема northwind

SELECT ordr.OrderID,ordr.CustomerID,cust.CompanyName,ordr.ShippedDate,prod.ProductName
FROM dbo.Orders ordr
INNER JOIN dbo.[Order Details] ord ON ord.OrderID = ordr.OrderID
INNER JOIN dbo.Products prod ON ord.ProductID = prod.ProductID
INNER JOIN dbo.Customers cust ON ordr.CustomerID = cust.CustomerID
INNER JOIN dbo.Employees empl ON ordr.EmployeeID = empl.EmployeeID
WHERE ordr.OrderDate >= N'1996-01-01 00:00:00'


если устроит, то выкинуть, как минимум,
INNER JOIN dbo.Customers cust ON ordr.CustomerID = cust.CustomerID
INNER JOIN dbo.Employees empl ON ordr.EmployeeID = empl.EmployeeID

т.к поля этих таблиц не участвуют в SELECT
и тогда, если опять же нужно, зв условие WHERE поставить ordr.CustomerID Is NOt Null And ordr.EmployeeID Is Not Null
хоят мне кажется, что там форинкей и пустых значений быть не должно
31 май 19, 07:50    [21898166]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7391
nc1318,

создать индексированное представление.

Внутреннее объединение является фильтром, его нельзя выкинуть из запроса.
31 май 19, 15:11    [21898850]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30739
Владислав Колосов
Внутреннее объединение является фильтром, его нельзя выкинуть из запроса.
Это есть разрешены заказы с пустыми CustomerID и EmployeeID
Мне кажется, в этой модели таких нет. Лучше это проверить, и выкинуть, чем зря цеплять данные.
31 май 19, 16:05    [21898926]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить