mysql 小表驱动大表(in,exists)

为什么要小表驱动大表呢

类似循环嵌套

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

如果小的循环在外层,对于数据库连接来说就只连接5次,进行5000次操作,如果1000在外,则需要进行1000次数据库连接,从而浪费资源,增加消耗。这就是为什么要小表驱动大表。

 

 

in:子查询为小表    该子查询返回数据放入内存,在主查询中对应内容。

exists:子查询为大表    该子查询实际上并不返回任何数据,而是返回值True或False。(子查询中的select *与select 1没有区别,因为只返回true或false)

 

posted @ 2021-08-17 13:45  低调的。。。  阅读(262)  评论(0编辑  收藏  举报