为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8.1
【操作系统】:centosx86
【CPU】:
【问题描述】*:对无order by有count语句会根据count的数量默认升序,在sql语句中,以时间分组为主表,2022-09 2022-10 2022-11为左表,右表是根据时间统计是数量,9月份没有数据,10月份有数据,11月份有数据,按道理应该查出的是2022-09 0 ; 2022-10 3 ; 2022-11 4 但是实际查出的是2022-10 3 ; 2022-10 4 ;2022-09 0 ,内网不好发sql,请dm大佬解答一下十分感谢
您这里看到顺序不是预想中的样子,就是因为走了hash-join,然后结果集做了映射,不过每个版本的结果集映射规则应该都挺简单的,您可以在自己的版本上很快的试出来映射规则。
如果想要有序的话,还是建议加上order by子句。
DM里两个表连接如果走nl-index-join的话,结果是按照左表的扫描顺序排列,走hash-join的话,结果按照右表的扫描顺序排列。
但是实际中,hash-join的结果往往在结果集映射这一步做了调整,只在第一行和“各分支的第一行”可以看到原有顺序的影子,我的版本是300行一个分支,您可以自己尝试一下10行,100行,500行,1000行,2000行的hash-join顺序。