首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用"tblA“优化表"tblA”内连接的查询和使用

使用"tblA“优化表"tblA”内连接的查询和使用
EN

Stack Overflow用户
提问于 2012-09-18 01:04:57
回答 2查看 77关注 0票数 2

我见过一个sql查询,比如,

代码语言:javascript
运行
复制
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%')

有没有人能解释一下

代码语言:javascript
运行
复制
 tblA A1
    inner JOIN  tblA A2 ON A1.AcctServiceID = A2.AcctServiceID

我们可以优化上面的查询吗?请建议我如何优化上面的查询。

请帮帮我。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-18 01:10:02

代码语言:javascript
运行
复制
 inner JOIN  tblA A2 ON A1.AcctServiceID = A2.AcctServiceID

这一行意味着您以A1的身份加入tblA,以A2的身份加入tblA,当来自tblA的AcctServiceID as A1与来自tblA的AcctServiceID as A2相同时,显示该行。优化此查询的方法是删除此行,因为什么也不做。AcctServiceID和AcctSerivceID总是一样的,因为它是同一个字段。

票数 0
EN

Stack Overflow用户

发布于 2012-09-18 01:12:42

有很多很好的理由让你想要把一个表连接回它本身……但我在这里看不到。通常,您至少需要两个联接条件,一个查找某种类型的不等式的联接条件,或者一个可以与表中的零个或多个记录匹配的联接条件(以增加或限制结果的数量)。

我在这里看不到这样的东西。在本例中,看起来您只需删除连接,并将所有对A2的引用更新为使用A1即可。这是完整的查询吗?

我能想到的最接近的事情是,他们这样做是为了过滤掉AcctServiceID字段中有NULL的记录(因为NULL不等于它本身),但这将是一种奇怪的尝试方式,如果它真的有效的话。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12464008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档