У меня есть таблица SpecialOffers
и стол для акционных элементов под названием SOItems
И я хочу, чтобы получить специальное предложение для конкретного объекта, если я нашел, что это так, первый я сделал это:Несколько SQL запросов или объединений?
IF EXISTS(SELECT * FROM SOTtems WHERE ItemType = 2 AND Itemid = @id)
BEGIN
INSERT INTO #SO
SELECT * FROM SpecialOffers so
INNER JOIN SOItems soi ON so.Id = soi.SpecialOfferID
WHERE soi.ItemType = 2 AND soi.Itemid = @id
END
Но чтобы избавиться от из INNER JOIN, потому что я думал, что это лучше для производительности я сделал это:
DECLARE @specialOfferID INT
SET @specialOfferID = (SELECT SpecialOfferID FROM SOTtems WHERE ItemType = 2 AND Itemid = @id)
IF @specialOfferID IS NOT NULL
BEGIN
INSERT INTO #SO
SELECT * FROM SpecialOffers so
WHERE ID = @specialOfferID
END
Так что более эффективно и лучше для производительности, чтобы выполнить более SQL запросов или использовать присоединиться к этому примеру и вообще
Примечание: в хранимой процедуре я пишу я должен это более чем в 6 раз, поэтому я спросил у :)
благодаря
Спасибо большое, я согласен с вами, но я не оптимизирую, пока у меня не возникнет проблема с производительностью, я не согласен, я имею в виду, если вы сначала напишете свой код, у вас не будет проблем с производительностью в будущем, то вам не нужно оптимизировать – AlaaL
@ TheDarkLord Код должен работать правильно во-первых, быть ремонтопригодным и соответствовать основным передовым практикам. Все после этого - оптимизация. Но вы правы, после многих (14, может быть?) Лет с SQL Server мое определение основных лучших практик обычно является достаточным, чтобы избежать дальнейшей оптимизации. –
Спасибо за помощь. – AlaaL