我有一個表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 2012-04-22 13:15:55
@TheDarkLord代碼需要首先正確工作,可維護並滿足基本的最佳實踐。之後的一切都是優化。但是你說的對,經過很多(14年,也許是?)年的SQL Server之後,我對基本最佳實踐的定義通常足以避免進一步的優化。 – 2012-04-22 13:26:56
感謝您的幫助。 – AlaaL 2012-04-22 13:53:09