私はSOItems
と呼ばれる特別オファー項目のテーブルSpecialOffers
とテーブルを持っていると私はそれはそう最初私は、このやった場合、私は、特定の項目のための特別なオファーを取得したい:複数の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
しかし、その後取り除くために
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クエリを実行するか、この例のためにと一般
に参加使用するためのパフォーマンスのために、より効率的かつ優れている:INNERの私はそれがパフォーマンスのために良いでしょうと思ったので、私はこれをしなかったのJOIN注:ストアドプロシージャに私は私はuがオプティマイザは以上のものですので、この手の最適化は、不要と思われる
おかげ
おかげさまで私はあなたに同意しますが、パフォーマンスの問題が発生するまでは最適化しません。私が同意しない場合は、最初にコードを良く書くと将来的にパフォーマンスの問題が発生しません。 – AlaaL
を@TheDarkLordで最適化する必要はありません。コードはまず正しく動作し、維持可能であり、基本的なベストプラクティスを満たしている必要があります。それ以降のすべてが最適化です。しかし、あなたは正しいです、SQL Serverの多くの(14、多分?)年後、私の基本的なベストプラクティスの定義は、それ以上の最適化を避けるのに十分です。 –
ご協力ありがとうございます。 – AlaaL