当我向数据库发送以下查询时,它会在 < 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 子句添加一个 unique 时,几乎需要 4.5 分钟才能返回剩余的 40 个条目。这似乎有点不成比例 - 我可以做些什么来改进这个问题,解决它或者至少找出这里到底发生了什么?
执行计划
没有区别
具有独特性
非常感谢您的帮助!
最佳答案
聚集索引扫描表明查询的表上没有好的索引。 如果您创建以下索引,执行时间应该会缩短。
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
关于sql-server - SQL Server 上 DISTINCT 造成巨大性能损失的解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10087335/