我见过一个 sql 查询,类似于,
SELECT B.SubscriptionID
FROM
tblA A1
inner JOIN tblA A2 ON A1.AcctServiceID = A2.AcctServiceID
INNER JOIN tblB B ON A2.ServiceID = B.ServiceID
INNER JOIN tblC C ON B.SubscriptionID = C.SubscriptionID
WHERE
A1.ServiceID = 1302
AND (C.Type LIKE '%O%' OR C.Type LIKE '%A%')
谁能解释一下有什么用
tblA A1
inner JOIN tblA A2 ON A1.AcctServiceID = A2.AcctServiceID
我们可以优化上面的查询吗?请建议我如何优化上述查询。
请帮帮我... 谢谢。
最佳答案
您可能有很多充分的理由想要将表连接回其自身......但我在这里没有看到它。通常,您至少需要两个联接条件,一个查找某种类型的不等式的联接条件,或者一个可以匹配表中零个或多个记录的联接条件(以增加或限制结果数量)。
我在这里没有看到类似的东西。在这种情况下,您似乎只需删除联接,然后更新对 A2 的所有引用以使用 A1 即可。这是完整的查询吗?
我在这里能想到的最接近的事情是,他们这样做是为了过滤掉 AcctServiceID 字段中带有 NULL 的记录(因为 NULL 不等于其自身),但这将是一种奇怪的尝试方法,如果它甚至有效。
关于sql-server - 优化表 "tblA"内连接与 "tblA"的查询和使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12464008/