У меня SQL-запрос с предложением where, например:
Where ManufacturerID = @ManufacturerID
AND ItemID IN (SELECT ItemID FROM @T)
AND RelatedItemID IN (SELECT RelatedItemID FROM @T)
Что даст мне лучшую производительность или это правильный способ сделать это? 3 индекса - по одному на каждый столбец или один индекс, который включает все 3?
ЗДЕСЬ БОЛЬШЕ ПОЛНОГО ВИДА SP BEING RUN:
DECLARE @T TABLE (
[CategoryID] [int] NOT NULL,
[ManufacturerID] [int] NULL,
[ItemID] [varchar](100) NOT NULL,
[ItemName] [varchar](100) NULL,
[PhotoName] [varchar](150) NULL,
[ModifiedOn] [datetime] NULL,
[ModifiedBy] [varchar](50) NULL,
[IsDeleted] [bit] NOT NULL)
;WITH T As
(SELECT CategoryID, ManufacturerID, ItemID, ItemName, PhotoName, ModifiedOn, ModifiedBy, IsDeleted
FROM StagingCategoryItems
WHERE (ManufacturerID = @ManufacturerID)
EXCEPT
SELECT CategoryID, ManufacturerID, ItemID, ItemName, PhotoName, ModifiedOn, ModifiedBy, IsDeleted
FROM CategoryProducts
WHERE (ManufacturerID = @ManufacturerID)
)
INSERT INTO @T
SELECT *
FROM T
DELETE FROM CategoryProducts WHERE ManufacturerID = @ManufacturerID
AND ItemID IN (SELECT ItemID FROM @T)
AND CategoryID IN(SELECT CategoryID FROM @T)
INSERT INTO [CategoryProducts]
([CategoryID]
,[ManufacturerID]
,[ItemID]
,[ItemName]
,[PhotoName]
,[CreatedOn]
,[CreatedBy]
,[ModifiedOn]
,[ModifiedBy]
,[DeletedOn]
,[DeletedBy]
,[IsDeleted])
SELECT [CategoryID]
,[ManufacturerID]
,[ItemID]
,[ItemName]
,[PhotoName]
,[CreatedOn]
,[CreatedBy]
,[ModifiedOn]
,[ModifiedBy]
,[DeletedOn]
,[DeletedBy]
,[IsDeleted]
FROM [StagingCategoryItems]
WHERE ManufacturerID = @ManufacturerID
AND ItemID IN (SELECT ItemID FROM @T)
AND CategoryID IN(SELECT CategoryID FROM @T)