2
をStoreID
に結合するまで実行時間は〜2秒です。これは〜3分に増加します。ProductIDのみで結合すると〜2秒になります。コンポジットプライマリキーのスロー結合
SELECT
Enabled = pp.PspEnabled
, StockStatusID = ss.ID
, WebSellable = pp.PspWebSellable
, CSSellable = pp.PspCsSellable
FROM
#ExternalProducts pp
JOIN
Product p ON p.ExternalCode = pp.code
JOIN
Stores s ON s.Name = pp.p_externalStore
JOIN
StockStatus ss ON ss.Name = pp.PspStockStatus
JOIN
ProductStores ps ON (/* Store join increases time only */ ps.StoreID = s.ID AND ps.ProductID = p.ID)
行:
- 店舗:108
- 製品:136'598
- ProductStores:609'963
キー:
CONSTRAINT [PK_dbo.Stores]
PRIMARY KEY CLUSTERED ([ID] ASC)
CONSTRAINT [PK_dbo.Product]
PRIMARY KEY CLUSTERED ([ID] ASC)
CONSTRAINT [PK_dbo.ProductStores]
PRIMARY KEY CLUSTERED ([ProductID] ASC, [StoreID] ASC)
CONSTRAINT [FK_dbo.ProductStores_dbo.Stores_SiteID]
FOREIGN KEY([StoreID]) REFERENCES [dbo].[Stores] ([ID])
CONSTRAINT [FK_dbo.ProductStores_dbo.Product_ProductID]
FOREIGN KEY([ProductID]) REFERENCES [dbo].[Product] ([ID])
実行計画:
実行計画は、バルクコストがハッシュマッチから来ていることを示す(内部結合)ハッシュキープローブ[dbo].[Stores].Name
とハッシュキーと私は問題があると仮定した[#ExternalProducts].p_externalstore
を構築けどこれをどう解釈するのか分からないのですか?
すべてのヘルプは大歓迎です!
私はあなたが実際に 'ProductStores'にインデックスを持っているとは思いません。 –
'SELECT * FROM sys.indexes ...'を実行すると 'PX_dbo.ProductStores CLUSTERED'、' IX_ProductID NONCLUSTERED'、 'IX_StoreID NONCLUSTERED'が表示されます。 –
実行計画を掲載できますか?また、チューニング・アドバイザでその問合せを実行しましたか?一時テーブルには何がありますか? –