一句玩笑之后的思考(r6笔记第68天)

今天在微信上碰到某大师,简单聊了下。我和这位大师的关系也蛮有趣,最开始通过其他的渠道认识,还没有见过面,我向他推荐了我的一名前同事,没想到这位大洋彼岸的前同事竟然和这位大师也曾经是同事。真是翻洋过海也逃不出他的圈子啊。为了简单起见我简称大师为A,前同事为B,我为C,所以我就笑称既然这样,按照表的连接关系,A和B是同事,B和C是同事,那A和C也是同事了,听起来还是蛮有道理的吧。大师简单一句哈哈了事。 这个也就自己糊弄糊弄自己,猛意向似乎还确实是蛮有道理的。 如果把表的结构和sql语句结合起来,我还真找不出该怎么把这种关系给描述出来,索性画了个图,一看就不满足情况吧。

玩笑归玩笑,不过自己哪根筋搭错了,突然想起一个问题来,想起一个sql优化案例来。 有兴趣可以参考通过图表简化sql语句的表关联 http://blog.itpub.net/23718752/viewspace-1455102/ 我举一个略微简单的例子,有这么一条sql语句,性能还能够接受,但是在做审核的时候老感觉哪里不对劲。 select subscriber.customer_id,subscriber.xxxx from customer,subscriber,account where customer.customer_id=account.customer_id and customer.customer_id=subscriber_id and subscriber.customer_id=account.customer_id and subscriber.xxxx 这个语句的输出就是要显示用户的信息。 三者的关系可以这么来描述,就是典型的三户模型,客户,用户,账户。

按照三户模型,一个客户可以对应多个用户,一个客户可以对应多个账户,而用户和账户之间没有直接的映射,而是通过一个中间的属性来映射。 所以按照这个模型,可以肯定的是一个用户对应的客户只有一个,即subscriber.customer_id是唯一对应的。 一个账户对应的客户只有一个,即account.customer_id是唯一的。 所以如果用户和账户归属于同一个客户,即subscriber.customer_id=account.customer_id就可以唯一确定一个客户 所以说上面的查询过滤条件 customer.customer_id=account.customer_id and customer.customer_id=subscriber_id and subscriber.customer_id=account.customer_id 是不是从业务来看是不是显得有些多余啊。 其实直接可以根据一句subscriber.customer_id=account.customer_id就可以锁定对应的customer_id了。 所以语句就可以直接修改为下面的形式,因为业务上肯定是支持的,直接去除了customer表。 select subscriber.customer_id,subscriber.xxxx from subscriber,account where subscriber.customer_id=xxxx and subscriber.customer_id and account.customer_id and subscriber.xxxx 世界中的关系还真是微妙,我想我们的关系就是linkedin要做的事情吧。而在脑洞大开联想起sql调优来看,在熟悉业务的基础上调优也会有一个大的提升。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2015-09-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏linux、Python学习

误删了公司数据库,但我还是活下来了!

上周我与同事们进行了一次关于职业生涯中搞砸了一些事情的简短谈话。这确实会沦为他人笑柄,却更给我们带来了珍贵的教训。重要的是,我们应该分享那些曾经的错误,这样其他...

390
来自专栏FreeBuf

基于Tor的通讯软件Briar:断网也能用的通信软件

Briar是一款正在研发中的基于Tor的通讯软件,开发人员称,这款应用已经通过了安全审计进入Beta阶段。应用目前已经上架Google Play Store,i...

3953
来自专栏云加头条

电商月将至,腾讯云DCDB助力电商企业应对支付洪峰

第34届中国数据库学术会议(NDBC 2017)已于2017年10月20日至22日在浙江大学举办。本次会议,腾讯云带着其分布式数据库 DCDB(内部代号TDSQ...

2210
来自专栏Grace development

浅谈架构是为了什么 (下)

从现在开始,假设我们自己是一个创业的小团队。没资金没人脉,靠技术打天下。现在要开发一套电商系统。开始自己的表演。

992
来自专栏伪君子的梦呓

把小程序『颜值检测仪』开源了

9月底的时候,一个同学拉我参加一个比赛,思考了一下之后就报名了(最后一天报的名)。报完名后就开始搞小程序,什么都没考虑,直接就开始写,试了几个方向之后,就决定调...

2764
来自专栏ATYUN订阅号

【业界】Facebook对收集用户通话和短信数据的言论作出了回应

AiTechYun 编辑:nanan ? 也许你可以查看一下你的数据档案,看看Facebook的算法是否知道你打过电话给谁。 Facebook对有关收集通话和短...

3457
来自专栏大数据文摘

业界 | 谷歌版“剑桥分析事件”上演,华尔街日报发文谴责,谷歌长文回应

据外媒消息,谷歌同名社交网络Google+因为出现BUG将会关闭,并且因为安全漏洞,496,951名用户的姓名、邮箱、性别等一系列的私人资料将可能遭到泄露。

1395
来自专栏云加头条

DCDB让秒杀更从容、购物更狂欢

众所周知,“光棍节”是西方文化席卷中国后的产物。现如今,“光棍节”华丽地演绎了屌丝大逆袭,成为家喻户晓的购物狂欢节。面对巨大的购买流量,电商企业如何应对支付洪峰...

5810
来自专栏魏艾斯博客www.vpsss.net

腾讯云年中大促-热销云产品年付 3 折起

1983
来自专栏北京马哥教育

误删了公司数据库,但我还是活下来了

2145

扫码关注云+社区

领取腾讯云代金券