关灯
得知互动 门户 互联网+ SEO/SEM 查看内容
14

在查询的优化中为什么要永久小表驱动大表?

摘要: 1.为什么要小表驱动大表呢雷同循环嵌套for(inti=5;.......){for(intj=1000;......){}}假如小的循环在外层,对于数据库毗连来说就只毗连5次,举行5000次操纵,假如1000在外,则必要举行1000次数据库毗连,从而浪费资 ...

1.为什么要小表驱动大表呢

雷同循环嵌套

for(int i=5;.......)
{
for(int j=1000;......)
{}
}

假如小的循环在外层,对于数据库毗连来说就只毗连5次,举行5000次操纵,假如1000在外,则必要举行1000次数据库毗连,从而浪费资源,增添斲丧。这就是为什么要小表驱动大表。

好比:我们在tb_dept_bigdata表中插入100条数据,在tb_emp_bigdata表中插入5000条数据。

在查询的优化中为什么要永久小表驱动大表?

在查询的优化中为什么要永久小表驱动大表?

注:100个部分,5000个员工。tb_dept_bigdata(小表),tb_emp_bigdata(大表)。

①当B表的数据集小于A表数据集时,用in由于exists。

select *from tb_emp_bigdata A where A.deptno in (select B.deptno from tb_dept_bigdata B)

B表为tb_dept_bigdata:100条数据,A表tb_emp_bigdata:5000条数据。

用in的查询时间为:

在查询的优化中为什么要永久小表驱动大表?

经比照可看到,在B表数据集小于A表的时间,用in要由于exists,当前的数据集并不大,以是查询时间相差并未几。

②当A表的数据集小于B表的数据集时,用exists由于in。

select *from tb_dept_bigdata A where A.deptno in(select B.deptno from tb_emp_bigdata B);

用in的查询时间为:

在查询的优化中为什么要永久小表驱动大表?

将上面sql转换成exists:

select *from tb_dept_bigdata A where exists(select 1 from tb_emp_bigdata B where B.deptno=A.deptno);

用exists的查询时间:

在查询的优化中为什么要永久小表驱动大表?

由于数据量并不是很大,因此比照并不是难么的猛烈。

附上结论截图:

在查询的优化中为什么要永久小表驱动大表?

.总结

下面结论都是针对in或exists的。

in背面跟的是小表,exists背面跟的是大表。

简记:in小,exists大。

对于exists

select .....from table where exists(subquery);

可以明白为:将主查询的数据放入子查询中做条件验证,根据验证效果(true或false)来决定主查询的数据是否得以保存。


路过

雷人

握手

鲜花

鸡蛋

说点什么...

已有14条评论

最新评论...

Hot¢恋峰♂2020-9-26 04:20引用

转发了

关平2020-9-26 04:15引用

转发了

家驹死党2020-9-26 04:11引用

转发了

lyz2020-9-26 04:07引用

转发了

¢莫尐柒2020-9-26 04:02引用

转发了

老男孩2020-9-26 03:58引用

转发了

plthtx2020-9-26 03:54引用

转发了

老男孩2020-9-26 03:50引用

转发了

关平2020-9-26 03:45引用

转发了

821212xw2020-9-26 03:41引用

转发了

windy2020-9-26 03:37引用

转发了

♀Air_raid2020-9-26 03:32引用

转发了

老男孩2020-9-26 03:28引用

这个没绝对,照旧要看有无索引的。假如大表没索引,小表有,肯定大表快

海丸美2020-9-26 03:24引用

开头的毗连五次,,,你从那里资料得来的。

查看全部评论(14)

本文作者
2020-9-26 03:20
  • 0
    粉丝
  • 5632
    阅读
  • 14
    回复

关注帮客优品

扫描关注,了解最新资讯

联系人:叶先生
Q Q:956130084
EMAIL:956130084@qq.com
地址:中国·武汉
热门评论
排行榜

关注我们:微信订阅号

官方微信

APP下载

全国服务Q Q:

956130084

中国·湖北

Email:956130084@qq.com

Copyright   ©2015-2022  站长技术交流论坛|互联网技术交流平台Powered by©Discuz!技术支持:得知网络  

鄂公网安备 42018502006730号

  ( 鄂ICP备15006301号-5 )