本文共 369 字,大约阅读时间需要 1 分钟。
hive假定查询中的最后一个表是最大的表,在每次进行连接操作时,其会将其他表缓存起来,然后扫描最后那个进行计算,所有需要保证连续查找中表的大小按照从左到右依次增加。
或者,使用 /*+STREAMTABLE(大表别名)*/,最大的表可以不放到最后面。
注意,此处和关系型数据库的区别:
关系型数据库优化时,选择最有效率的表名顺序<查两张以上表时,把记录少的放在右边>:
ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.
转载地址:http://fgjxi.baihongyu.com/