に参加します。製品は複数のカテゴリーに分類できます。 CwObject(製品)とEntityObjectLink(製品とカテゴリ間のリンク):だから私は2つのテーブルを持っています。私はたくさんそれでも、それはひどく遅いですtweekingの日後に使用されている1つのクエリを持っています。 CwObjectには約400Kのレコードがあり、EntityObjectLinkには1.2Mのレコードがあります。ひどく遅いクエリは、私が製品とカテゴリを持っている私のアプリケーションでは
これはクエリです:
SELECT TOP (99999)
CwObject.*
FROM
CwObject
INNER JOIN
dbo.EntityObjectLink ON CwObject.CwObject_Guid = EntityObjectLink.EntityObjectLink_LinkedCwObject_Guid
WHERE
EntityObjectLink_LinkedCwEntity_Guid = '9a0e41d7-a472-445e-b94f-44fe1a1506b3'
AND CwObject_CwSiteCluster_Guid = '0f178176-9720-41c7-9528-99fdf30005e8'
AND CwObject_EntityType = 1
AND (CwObject_Predecessor_Guid IS NULL)
ORDER BY
CwObject_Name ASC
EntityObjectLink
は、関連するクラスタ化インデックスを持っている:私は、クエリを使用している場合
NONCLUSTERED INDEX [IX_ClusterEntitytypePredecessorStatusClusteraccount]
ON [dbo].[CwObject]([CwObject_CwSiteCluster_Guid] ASC,
[CwObject_EntityType] ASC,
[CwObject_Predecessor_Guid] ASC,
[CwObject_Status] ASC,
[CwObject_ClusterAccount_Guid] ASC)
INCLUDE (% ALL other columns%)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
:
PRIMARY KEY CLUSTERED ([EntityObjectLink_LinkedCwEntity_Guid] ASC,
[EntityObjectLink_LinkedCwObject_Guid] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
CwObject
表は、関連するインデックスを持っていますオプティマイザは、クエリが両方のインデックスを使用していることを伝えます。しかし、私は物事のカップルは、私は理解していない参照してください。これは、エンティティタイプとpredecessorguidための列統計が存在しないことを私に警告し
。私はちょうどインデックスを追加したのでそれはできますか?
CwObjects
テーブルに読み取る実際と推定行との間の大きな違いがあります。
私はライブクエリ統計を見てみると、クエリがインデックスにCwObjects
に171Kのレコードを読み取り、シーク(求める理由は?)。そして、マージは、それが2.5Kレコードを読み取りEntityObjectLink
テーブルに参加しません。それを逆にする方がはるかに効果的でした。
私は本当に、本当にここに立ち往生しています...誰が助けることはできますか?ここで
は、実行計画である:https://1drv.ms/u/s!AlCbN2sexrJ-hNJjeSR9cZPOEpOHww
UPDATE:
AtoStats、ON古い数時間です。
ほぼすべての時間は、インデックスで消費される... CwObjectに
UPDATE 2模索:
を私はcwObjects
テーブルの上に更新するために、統計を余儀なくされました。これは大きな違いをもたらしました!クエリはほぼ10倍高速です!
( 'EntityObjectLink_LinkedCwEntity_Guid、CwObject_CwSiteCluster_Guid')に複合インデックスを持ち、もう1つには' CwObject_Name'を改良するかもしれません。 –
実行計画を投稿してください – TheGameiswar
最初のキー列の後にCwObjectのクラスタードインデックスにCwObject_Guidを追加しようとしましたか? –