阿里的一道sql优化面试题

现在有一个很多个表进行关联查询的sql,子表的数据非常的多,那么请问你仅仅从sql的角度去进行sql语句的优化,不需要考虑索引、谓词

求解或!!!!!!!!!!!!!


全部评论
自然连接,连接顺序考虑中间的临时表尽可能的小。这就是最优的方式了,没有之一。
1 回复 分享
发布于 2017-05-13 00:06
大表和小表连接查询,小表放在后面,因为放在后面的要全表扫描,做笛卡尔积,貌似是叫这个名字,然后尽量不用自然连接,这样会产生临时表,用大表左连接小表。我的想法,大家可以讨论一下
1 回复 分享
发布于 2017-05-13 11:17
应该是小表在左侧,代表处于外循环位置。IO开销=s+s/m*L, s是小表行数,L是大表行数,m代表内存允许放多少行数据。假设大表小表的列宽度一样,即一个磁盘block可以放的大小表元组数目相同。
点赞 回复 分享
发布于 2017-05-17 20:52
尽量用相同的键去连接,能少启动一些job,也可以考虑用left semi join去代替inner join,大表放在最后去连接 企业应该都是用hive,我是从hive的角度去看的。。
点赞 回复 分享
发布于 2017-05-18 00:06

相关推荐

02-28 17:01
门头沟学院 C++
俊朗的铁猫希望被捞:兄弟如果只想搞钱的话,你这个简历最适合的其实是辅导机构做dai写啥的真的特别赚
点赞 评论 收藏
分享
评论
点赞
28
分享

创作者周榜

更多
牛客网
牛客企业服务