我有一个T-SQL查询,我想让它更快。SQL Server T-SQL查询优化
我有Entity
和Address
表,并希望带回地址,如果邮寄地址存在。
有时对于任何给定的实体有多个地址。有一个主要的邮寄地址tinyint
,有时会被设置,有时不会,这里没有规则可以有5个默认的邮件地址所有的标志设置或没有设置标志。
这对11k行运行大约20秒我真的需要得到这个时间,任何人都可以帮忙吗?
SELECT
e.*, addr.*
FROM
[Entity] e
--Address does not always exist
--PrimaryAddress is a Not Null TinyInt, sometimes this flag is enable twice for a given entity.
LEFT OUTER JOIN
[Address] addr ON addr.[EntityID] = e.[EntityID]
AND addr.Code = 'MAILING'
AND addr.[AddressID] = (
--This remove duplicates but add's a long delay(15 seconds) to execution time.
SELECT Top 1 a.[AddressID]
FROM [Address] AS a
WHERE a.Code = 'MAILING'
AND a.[EntityID] = e.[EntityID]
ORDER BY a.[PrimaryAddress] DESC)
还应当指出的是,我不能任何索引添加到两个表要么:(
亲切的问候 西蒙·杰克逊
这是第三方数据库,任何修改都不是“支持”的。 – Simon
@marc_s,在不改变索引的情况下,通常会有很多可行的选择来进行性能调整。 – HLGEM