我有一個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