为什么子查询比连接查询(LEFT JOIN)效率低
MySQL从4.1版本开始支持子查询,使用子查询进行SELECT语句嵌套查询,可以一次完成很多逻辑上需要多个步骤才能完成的SQL操作。子查询虽然很灵活,但是执行效率并不高。
那么问题来了,什么是子查询?为什么它的效率不高?
子查询:把内层查询结果当作外层查询的比较条件
示例:
select goods_id,goods_name from goods where goods_id = (select max(goods_id) from goods)
执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,这里多了一个创建和销毁临时表的过程。
优化方式:
可以使用连接查询(JOIN)代替子查询,连接查询不需要建立临时表,因此其速度比子查询快。
任何一个数据库都没有规定不能超过多少表,left join表越多需要更加注意sql的匹配顺序,只有最先匹配出最少的数据才能保证sql的执行效率
1、两个表连接
select a.*,b.* from a left join b on a.id =b.id;
2、三个以上
select a.*,b.* from a left join b on a.id=b.id left join c on a.id=b.id where …;
3、可以有多种变换,连接条件,显示字段跟具体结合具体场景灵活运用。
扩展资料
论SQL语句中的多表关系
1、一对多 - 用于去重 - left join 要连接的表 on 唯一字段(标识) = 多字段
2、一对一 - 用于查询 - left join 要连接的表 on 唯一字段 = 唯一字段
3、多对一 - 用于分组 - left join 要连接的表 on 多字段 = 唯一字段
方舟生存进化怎么玩联机模式?蒸汽正版可以连接到互联网,游戏现在不是很贵。当蒸汽在打折的时候,或者摩宝会更便宜。如果用的是手机,4399、好友、快宝、谷歌商店都可以下载。手机安装谷歌套件后,就可以连接互联网了。如果你怕麻烦,你可以在这个谷歌商
Python处理二进制数据方便吗?可以的,二进制是计算机内的表示方法,处理二进制数据是最基本的能力。如果是二进制字符串转十进制:如果是从文件或网络中获取的数据,要知道某一位是0还是1的话,获取的数据可以按字符读取,由于一个字符由8位二进制表
金浩茶油怎么样?金浩茶油公司是湖南的一家品牌公司。金浩茶油多次获奖,荣获全国著名山茶籽油品牌等荣誉称号。销售量居全国第一。公司一直致力于茶油的开发和追求。选用成熟、饱满、优质的手工采摘油茶果实,采用低温压榨技术制作;最大限度地保留不饱和脂肪
从个人职业上来说,软件测试和web前端哪个更有发展?谢谢你的邀请!Web前端属于开发位置。在移动互联网和大数据快速发展的推动下,前端发展取得了长足的进步。目前,除了网页前端,前端开发阵地还包括移动端开发(Android开发、IOS开发)、小
用maya粒子怎么做下雪特效?动力学,创建一个平面,然后选择该平面,打开上面的“粒子”选项,选择“从对象发射”后面的小框,并将发射器类型更改为“曲面”。接下来,改变粒子的方向,将法向速度改为负值或增大力场。记住选择要更改颜色和渲染类型的粒子
C#winform的三层架构里可以用EF框架吗?它不全是三层体系结构。1)如果不需要使用相同的UI层(WinForm)或相同的三层应用程序逻辑体系结构,则可以直接使用。winform开发一般用什么架构?微软推荐的分层结构是自下而上的:数据访
医护人员旅游免费如何申请?自由行是一项因地而异的政策。首先,我们需要了解当地的政策。就我们旅行社而言,医务人员需要准备相关文件。报名旅游有优惠活动,景区对医务人员实行免票政策。详情请看图片我发现了一个秘密,每天坐着也能占据微信体育的第一个封
自学设计有哪些好用的网站?这就是重点。哈哈。我也是建筑学的毕业生如果你想谈自学设计,首先,我要自学网站。它有很多种类,专业和方向。这取决于我的选择。我在大学里发现了这个网站,现在我经常在上面学习。事实上,还有其他网站,但它们没有这个好。如果
个人邮箱哪个域名后缀好,名字全拼163的被占用了?个人邮箱的域名很多,至于全名邮箱是否还存在,我们只能一一尝试。这个邮箱很好。谷歌产品,你可以用它轻松访问很多网站,使用谷歌服务时也很方便,比如Chrome浏览器:微软产品,也很强大。与神秘的
python怎么换行啊?python中怎么换行,怎么从第一行换到第二行的?我相信新手经常会遇到为什么他们发现程序不能将行包装到Python shell。一旦他们把线包起来,他们就认为它被执行了。这是因为您使用的是pythonshell!您可