私は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