查看: 5251|回复: 8

[SQL] 【讨论】请教多表连接高效率的SQL语句写法!

[复制链接]
论坛徽章:
1
优秀写手
日期:2014-03-12 06:00:13
发表于 2015-1-4 16:21 | 显示全部楼层 |阅读模式
真实数据很大,抽象一下

Item
Id      名称
1   导弹
2   飞机
3   大炮
4   机枪
5   步枪
6   手枪
7   梭标
8   石头

Depot1
Id      名 称   数量         
1                导弹      2
2      飞机      1
3      大炮      2
4      机枪      20
5      步枪      10

Depot2表

Id      名 称   数量         
4      机枪      2
5      步枪      20
6      手枪      50
7      梭标      500  

要求查询结果如下
Id    名 称  deot1数量   depot2数量
1  导弹    2        
2  飞机    1        
3  大炮    2        
4  机枪    20      20
5  步枪    10      20 
6  手枪           50
7  梭标           500  

实际类似于depot1的表有7张,希望不要用uniondecode之类的语句来写,请教有没有效率更高的写法.             

论坛徽章:
737
季节之章:春
日期:2015-07-31 17:16:29ITPUB季度 技术新星
日期:2014-07-17 14:37:00季节之章:秋
日期:2015-07-31 17:16:14季节之章:夏
日期:2015-07-31 17:16:29股神
日期:2014-10-15 09:23:31衰神
日期:2014-10-20 22:47:12季节之章:冬
日期:2015-07-31 17:16:14红钻
日期:2014-12-16 17:51:41洛杉矶湖人
日期:2016-09-23 08:18:15布鲁克林篮网
日期:2016-09-23 08:17:18
发表于 2015-1-4 16:29 | 显示全部楼层
lz觉得decode慢,如何证明?

使用道具 举报

回复
认证徽章
论坛徽章:
40
2014年新春福章
日期:2014-02-18 16:43:09喜羊羊
日期:2015-05-18 16:24:25慢羊羊
日期:2015-06-12 13:08:22暖羊羊
日期:2015-07-02 16:06:20暖羊羊
日期:2015-07-06 16:28:55狮子座
日期:2015-07-29 17:14:43摩羯座
日期:2015-09-02 13:58:47白羊座
日期:2015-09-08 10:39:06天枰座
日期:2015-09-17 21:41:53摩羯座
日期:2015-10-29 21:07:02
发表于 2015-1-4 16:51 | 显示全部楼层
试试:
select item.id,item.名称,depot1.数量 as depot1数量,depot2.数量 as depot2数量
from item left join depot1 on item.id=depot1.id
                left join depot2 on item.id=depot2.id
where depot1.id is not null or depot2.id is not null

使用道具 举报

回复
论坛徽章:
1
优秀写手
日期:2014-03-12 06:00:13
 楼主| 发表于 2015-1-4 16:53 | 显示全部楼层
decode 比其实的语句是否慢我不知道,但目前我们用union 后数据行大慨有8万行,再decode8万次得出结果就很慢了,所以想请教有没有效率更高的语句

使用道具 举报

回复
认证徽章
论坛徽章:
169
SQL数据库编程大师
日期:2016-01-13 10:30:43SQL极客
日期:2013-12-09 14:13:35SQL大赛参与纪念
日期:2013-12-06 14:03:45最佳人气徽章
日期:2015-03-19 09:44:03现任管理团队成员
日期:2015-08-26 02:10:00秀才
日期:2015-07-28 09:12:12举人
日期:2015-07-13 15:30:15进士
日期:2015-07-28 09:12:58探花
日期:2015-07-28 09:12:58榜眼
日期:2015-08-18 09:48:03
发表于 2015-1-5 22:32 | 显示全部楼层
bfc99 发表于 2015-1-4 16:51
试试:
select item.id,item.名称,depot1.数量 as depot1数量,depot2.数量 as depot2数量
from item left ...

同意

使用道具 举报

回复
论坛徽章:
9
奥运会纪念徽章:羽毛球
日期:2012-10-08 11:33:492013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:47:53马上加薪
日期:2014-02-18 16:47:53马上加薪
日期:2015-01-13 21:26:15优秀写手
日期:2015-02-12 06:00:15慢羊羊
日期:2015-03-04 14:53:332015年新春福章
日期:2015-03-06 11:58:39
发表于 2015-1-5 23:15 | 显示全部楼层
肩上落花 发表于 2015-1-4 16:53
decode 比其实的语句是否慢我不知道,但目前我们用union 后数据行大慨有8万行,再decode8万次得出结果就很 ...

能否把楼主的语句贴出来参考下。

使用道具 举报

回复
认证徽章
论坛徽章:
90
秀才
日期:2015-11-02 11:24:03秀才
日期:2017-09-18 17:34:47秀才
日期:2017-09-18 17:02:592017金鸡报晓
日期:2017-02-08 14:09:132017金鸡报晓
日期:2017-01-10 15:39:05秀才
日期:2016-12-21 16:55:07ITPUB15周年纪念
日期:2016-10-06 10:54:102016猴年福章
日期:2016-02-23 09:58:342016猴年福章
日期:2016-02-18 09:31:30秀才
日期:2016-02-18 09:19:48
发表于 2015-1-8 09:42 | 显示全部楼层
肩上落花 发表于 2015-1-4 16:53
decode 比其实的语句是否慢我不知道,但目前我们用union 后数据行大慨有8万行,再decode8万次得出结果就很 ...

我个人觉得union 比较耗时啊。

使用道具 举报

回复
论坛徽章:
1
优秀写手
日期:2014-08-13 06:00:13
发表于 2015-1-8 13:05 | 显示全部楼层
左连接就ok啊。

使用道具 举报

回复
论坛徽章:
7
优秀写手
日期:2013-12-18 09:29:08问答徽章
日期:2014-02-07 23:48:392014年新春福章
日期:2014-02-18 16:50:09马上有车
日期:2014-02-18 16:50:09马上有钱
日期:2014-10-26 21:51:11暖羊羊
日期:2015-03-04 14:54:572015年新春福章
日期:2015-03-06 11:59:47
发表于 2015-1-14 23:36 | 显示全部楼层
左联接轻松搞定.

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表