赞
踩
文章结构:(1)多表查询步步优化;(2)查询编写的注意点。
/*
补充说明(往后有博友反馈的话,会继续补充。)
*/
一、2017-7-19:
关于“超大型数据尽可能尽力不要写子查询,使用连接(JOIN)去替换它”。
关于这一类的总结,我们要认真去考量,这里并不是说一定。
1)因为在大型的数据处理中,子查询是非常常见的,特别是在查询出来的数据需要进一步处理的情况,无论是可读性还是效率上,这时候的子查都是更优。
2)然而在一些特定的场景,可以直接从数据库读取就可以的,比如一个表(A表 a,b,c字段,需要内部数据交集)join自己的效率必然比放一个子查在where中快得多。可参见我给的例子中的拉黑表,好友表(双方互相喜欢才是好友的表),在查自己的好友列表的时候,或者拉黑列表中。
文章目录:
(1)多表查询步步优化
基本连接方法(内连接、外连接以及交叉连接)
内连接:用比较运算符根据每个表共有的列的值匹配两个表中的行(=或>、
超大型数据尽可能尽力不要写子查询,使用连接(JOIN)去替换它(基础讲完,讲优化)
(3)使用联合(UNION)来代替手动创建的临时表建立索引(下一篇将详讲)
(2)查询编写的注意点
大概有9点,详情见下文。
一、多表查询步步优化:(使用还是之前的数据库的表,商品分类表以及商品详情表)
给出的数据库有基本的数据框架,剩下的几个假数据我们就自己创建吧。注意此两表是有外键约束的。
(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内部的数据;正因为得到的是内部共有数据,所以连接方式称为内连接。
很容器看出是两者都满足才查出
二)外连接之左连接
//意思:查得商品分类表的所有数据,以及满足条件的商品详情表的数据
select
*
from
commodity_classification c
left join commodity_list d
on d.Classify_Description=c.Good_kinds_Name
可以看到,首先是左表数据全部罗列,然后有满足条件的右表数据都会全部罗列出。若两条右表数据对左表一条数据,则会用对应好的左表数据补足作为一条记录。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。