暂无图片
select * from a,b where a.id=b.id; 如果a有100行数据,b有100万行数据,a与b是1:N关系,N很低,应该怎样优化SQL?
我来答
分享
三阳
2023-05-22
select * from a,b where a.id=b.id; 如果a有100行数据,b有100万行数据,a与b是1:N关系,N很低,应该怎样优化SQL?

 select * from a,b where a.id=b.id; 如果a有100行数据,b有100万行数据,a与b是1:N关系,N很低,应该怎样优化SQL?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新

因为a与b是1:N关系,N很低,可以在b的连接列(id)上创建索引,让a与走嵌套循环(a nl b),这样b表会被扫描100次,但是每次扫描表的时候走的是id列的索引(范围扫描)。如果让a和b进行HASH连接,b表会被全表扫描(因为没有过滤条件),需要查询表中100万行数据,而如果让a和b进行嵌套循环,b表只需要查询出表中最多几百行数据(100*N)。

暂无图片 评论
暂无图片 有用 8
暂无图片
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏