会用JOIN,却不懂编程的“程序员”(1)

1.1. 前言

作为公司的DB一个职责就是和开发沟通,并给出一些编写SQL的建议。但是沟通容易需要达成一致却是比较困难的。基本上在系统中对数据库的查询疯狂的使用到join进行。夸张的一条语句格式化后竟然有100多行,其中个总子查询中套子查询,join中套join(能写出这种SQL的也算的上是“大神”了 ^_^),这种语句我再之前的MySQL数据库中是重来没碰到过的(当然,在Oracle中还是时不时的会有)。然而这些语句竟然还是执行的比较多的。因此当访问上来的时候应用程序和数据库慢的更乌龟一样,CPU也在报警。严重影响到了系统。解析了一下SQL大部分时间都是花在SQL解析上面。不知道的人,总是说这CPU真垃圾,需要增加CPU(你好多钱哦,用MySQL和用Oracle一样)。解决办法就是将这些SQL进行拆解成简单的SQL。运行起来就顺利了。借着这件事。和开发负责人将类似的SQL都找出来,一并优化了。

之后我的建议是,能不能在系统中之后的开发不用join。原因是:不用jion之后能对系统的扩展和二次开发有帮助。重要的是能为能提高系统和数据库的并发。

程序员的接口总是那么的统一和一致:这样我们的开发量会大大提高,会影响进度。这时候我有什么好说的呢?毕竟公司的命脉就在与产品,产品都出不了。那不就值糟糕了。于是只能是默默的达成尽量不写复杂SQL。

1.2. 疑问

真的写简单的SQL就会降低开发效率么?真的就会增加工作量么?

1.3. 证明

本着拥有一点点开发经验,来打破他们说的会增加工作量,会降低开发效率。

1.4. 说明  

一下代码都是使用Python来实现。

为了阅读的分层次我使用5个章节来说明我的代码。

1.5. 数据库环境构建

本示例使用了4个表如下表:

表名 备注
user 用户表
orders 订单表
order_good 订单商品表
coupon 券表

 

以下是创建表和表数据的SQL:

SQL文件(没有带DROP database):test_db

1.6. Join查询拆解

在一般的时候大家都认为使用jion能在数据库找到自己想要到记录,如下面我们需要查询订单的相关信息:

如果将join拆分之后,就变成了4条简单的语句。如下:

这时候就有人会说了将语句给查分了的结构都还不是最终结果。这里我只能说确实是这样。最终结果我们需要在应用程序中将他拼凑出来。

 

昵称:HH
QQ:275258836
ttlsa群交流沟通(QQ群②:6690706 QQ群③:168085569 QQ群④:415230207(新) 微信公众号:ttlsacom)

感觉本文内容不错,读后有收获?

逛逛衣服店,鼓励作者写出更好文章。

HH

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

  1. 凉白开 1

    非常有道理