当前位置:   article > 正文

mysql左连接后数据重复_MySQL优化系列之查找优化,外连接、多表联合查询以及查询注意点...

mysql左连接一张表后数据剧增

文章结构:(1)多表查询步步优化;(2)查询编写的注意点。

/*

补充说明(往后有博友反馈的话,会继续补充。)

*/

一、2017-7-19:

关于“超大型数据尽可能尽力不要写子查询,使用连接(JOIN)去替换它”。

关于这一类的总结,我们要认真去考量,这里并不是说一定。

1)因为在大型的数据处理中,子查询是非常常见的,特别是在查询出来的数据需要进一步处理的情况,无论是可读性还是效率上,这时候的子查都是更优。

2)然而在一些特定的场景,可以直接从数据库读取就可以的,比如一个表(A表 a,b,c字段,需要内部数据交集)join自己的效率必然比放一个子查在where中快得多。可参见我给的例子中的拉黑表,好友表(双方互相喜欢才是好友的表),在查自己的好友列表的时候,或者拉黑列表中。

文章目录:

(1)多表查询步步优化

基本连接方法(内连接、外连接以及交叉连接)

内连接:用比较运算符根据每个表共有的列的值匹配两个表中的行(=或>、

超大型数据尽可能尽力不要写子查询,使用连接(JOIN)去替换它(基础讲完,讲优化)

(3)使用联合(UNION)来代替手动创建的临时表建立索引(下一篇将详讲)

(2)查询编写的注意点

大概有9点,详情见下文。

一、多表查询步步优化:(使用还是之前的数据库的表,商品分类表以及商品详情表)

235198_0.png

给出的数据库有基本的数据框架,剩下的几个假数据我们就自己创建吧。注意此两表是有外键约束的。

235198_1.png

(1)基本连接方法(内连接、外连接以及交叉连接):

一)内连接:用比较运算符根据每个表共有的列的值匹配两个表中的行(=或>、

//意思是:检索商品分类表和商品表“分类描述”相同的行

select

d.Good_ID ,

d.Classify_ID,

d.Good_Name

from

Commodity_list d

inner join commodity_classification c

on d.Classify_Description=c.Good_kinds_Name

得到的满足某一条件的是A,B内部的数据;正因为得到的是内部共有数据,所以连接方式称为内连接。

235198_2.png

很容器看出是两者都满足才查出

235198_3.png

二)外连接之左连接

//意思:查得商品分类表的所有数据,以及满足条件的商品详情表的数据

select

*

from

commodity_classification c

left join commodity_list d

on d.Classify_Description=c.Good_kinds_Name

235198_4.png

可以看到,首先是左表数据全部罗列,然后有满足条件的右表数据都会全部罗列出。若两条右表数据对左表一条数据,则会用对应好的左表数据补足作为一条记录。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/527407
推荐阅读
相关标签
  

闽ICP备14008679号