2015-09-28 2 views
0

Я новичок в письменной форме запроса и написал запрос, который выглядит какОптимизации запросов - нужно знать, лучший способ, чтобы написать его

SELECT * 
FROM Pages P 
INNER JOIN PageTypes PT ON PT.ID = P.pagetypes_id 
INNER JOIN Paragraphs Para ON Para.page_id = P.id 

WHERE PT.mame = 'News' 
AND Para.layout_id = (SELECT ID FROM Layout_Scripts WHERE name = 'intro') 

Это похоже на работу, но я не уверен, если это хорошо способ написать такой запрос или есть другие способы, чтобы написать optiomized запроса

+5

Избегайте использования 'SELECT *'; укажите только те столбцы, которые вам нужны. Производительность также зависит от доступных индексов. –

+2

Вы можете попробовать третий 'INNER JOIN' вместо второго' WHERE', используя те же критерии –

+0

У вас есть проблемы с производительностью? Или это теоретический вопрос? SQL Server достаточно хорош для построения планов выполнения таких запросов без дополнительной оптимизации. –

ответ

-1

я думаю, это лучше

DECLARE @ID int 

SELECT ID into @ID FROM Layout_Scripts WHERE name = 'intro' 

SELECT * 
FROM Pages P 
INNER JOIN PageTypes PT ON PT.ID = P.pagetypes_id 
INNER JOIN Paragraphs Para ON Para.page_id = P.id 
WHERE PT.mame = 'News' 
AND Para.layout_id = @ID 

, потому что если вы пишете в где, он выполняет запрос для каждой строки
, но я думаю, что идентификатор только 1, и лучше, если вы поместите его в переменную