2

次のクエリをdbに送信すると、2秒未満で4636行が返されます。

select
    company3_.Un_ID as col_0_0_ 
from
    MNT_Equipments equip
inner join
    DynamicProperties dprops
        on equip.propertiesId=dprops.id
inner join
    DynamicPropertiesValue dvalues
        on dprops.id=dvalues.dynamicPropertiesId
inner join
    Companies company3_
        on dvalues.companyId=COMPANY.Un_ID
where
    equip.discriminator='9000'
    and equip.active=1
    and dvalues.propertyName='Eigentuemer' 

しかし、select句にdistinctを追加すると、残りの40エントリを返すのに約4.5分かかります。これはやや不均衡のようです-これを改善したり、回避したり、少なくともここで何が起こっているのかを知るために何ができますか?

実行計画

はっきりしない

プラン1

明確に

プラン2

あなたの助けは大歓迎です!

4

1 に答える 1

2

クラスタ化インデックススキャンは、クエリされたテーブルに適切なインデックスがないことを示しています。次のインデックスを作成すると、実行時間が改善されます。

CREATE NONCLUSTERED INDEX [IX_MNT_Equipments_Active] ON [MNT_Equipments] 
(
    [propertiesId] ASC,
    [discriminator] ASC,
    [active] ASC
)
GO

CREATE NONCLUSTERED INDEX [IX_DynamicPropertiesValue_Name] ON [DynamicPropertiesValue] 
(
    [propertyName] ASC
)
GO
于 2012-04-10T13:00:37.517 に答える