【发布时间】:2012-02-25 07:25:23
【问题描述】:
我有两张桌子。一个表包含有关资产的信息,另一个表包含有关它们的关系的信息。我如何优化当前查询并获得类似的结果。
SELECT a1.ID FROM Asset a1
WHERE a1.AssetId =
(SELECT r.DestinationAssetId
FROM Relation r
INNER JOIN Asset a2 ON a2.AssetId = r.SourceAssetId
WHERE a2.ID = '1112174' and r.RelationshipType = 'Video File')
结果:13412331(与 a2.ID = '1125574' 相关的资产 ID)
我个人不喜欢这个愚蠢的子查询,有什么办法可以避免它并优化这个查询。
谢谢!
【问题讨论】:
-
您使用的是什么数据库?为什么不能加入与资产的关系?
-
MSQL,我可以加入 Relation to Asset,我在子查询中这样做。但是如何在一个查询中获得相同的结果。
-
优化还包括确保 JOINed 列具有匹配的数据类型并且有合适的索引。您应该查看 SQL Server 生成的查询计划,看看它在哪里花费时间。
标签: sql sql-server optimization join