BigQuery的ORDER BY子句使用哪种排序算法?

4

它使用冒泡排序、归并排序等类型的算法吗?是否有关于这些语句后台执行的文档或信息可用?

1个回答

3

不确定为什么你会被踩,因为我认为这里没有描述。在单个分区中,BigQuery使用introsort,取决于ORDER BY子句中列的类型和数量,使用一些技巧。例如,如果你有一个名为xINT64列,并且运行以下查询:

SELECT x
FROM dataset.table
ORDER BY x

BigQuery 会将所有 x 的值加载到一个向量中,然后进行排序并返回。但如果在选择列表或 ORDER BY 子句中有多个列,则会变得更加复杂。


谢谢Elliott,这方面还有其他的信息可用吗? - Pavan Kumar Kattamuri
具体是关于什么的? - Elliott Brossard
不同类型的SQL语句的执行算法 - Pavan Kumar Kattamuri
2
@ElliottBrossard:我猜它被踩是因为问题比较宽泛,与编程/SQL没有特别相关。排序算法完全被从用户中抽象出来,没有编程控制的方式。我同意了解BigQuery如何进行排序很有趣,但也许这更适合在StackExchange或Quora上提问?仅代表个人意见。 - Graham Polley
非常酷的信息!我个人认为这个问题是值得欢迎的,了解排序算法的复杂性对于决定我们愿意使用多少数据非常重要。不过我仍然想知道,如果在给定列上对表进行聚类是否也会影响排序。据我所理解,它似乎像索引一样工作,也许有优化措施可以进一步降低最坏情况下的复杂度期望。 - Willian Fuks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接