表连接查询时 大表在前小表在后(是说的字段少的还是数据量少的??) 为什么

 我来答
惠企百科
2022-09-28 · 百度认证:北京惠企网络技术有限公司官方账号
惠企百科
惠企百科网是一家科普类综合网站,关注热门中文知识,集聚互联网精华中文知识,本着自由开放、分享价值的基本原则,向广大网友提供专业的中文知识平台。
向TA提问
展开全部

因为表连接查询时后面的表必然会进行全表扫描,所以数据少的放后面,提高sql语句的执行效率。操作方法如下:

1、首先优化原则,小表驱动大小,即小的数据集驱动大的数据集。

2、select * from A where id in(select id from b),当B表的数据集必须小于A表的数据集时,用in优于exists。

3、select *from A where exists (select 1 from B where b.id=a.id)。当A表的数据集小于B表的数据集时,用exists优于in。

4、exists(subquery)只返回true或false,因此子查询中的select * 也可以是select 1 或select 'x',官方说法是实际执行时会忽略掉select清单,因此没有区别。

5、exists子查询的实际执行过程可能经过优化而不是理解上的逐条对比,如果担忧效率问题,可进行实际建立以确定是否有效率问题。

6、exists子查询往往也可以用条件表达式,其他子查询或者join来替代,何种最优需要具体问题具体分析

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式