HanaDB - 复杂度:SELECT COUNT( * ) FROM dbtab

HanaDB - Complexity of: SELECT COUNT( * ) FROM dbtab

此题与MySQL - Complexity of: SELECT COUNT(*) FROM MyTable;相同。

区别在于 MySQL 我想知道 HDB 的答案。

我用 Google 搜索了它,并在 SAP 知识库中查找它,但没有找到答案。

澄清一下:问题是关于在没有任何附加条件的情况下选择计数:

SELECT COUNT( * ) FROM dbtab.

以上查询的复杂度是多少。 HDB 是否在每个 table 之上存储一个计数器?

HANA 支持多种 table 类型,例如ROW-、COLUMN-、VIRTUAL-、EXTENDED- 和 MULTISTORE-table 在这里浮现在脑海中。

对于其中一些,当前 raw 记录计数作为内部存储结构的一部分保存,不需要在查询时计算。 对于 ROW 和 COLUMN tables 尤其如此。

VIRTUAL table 处于极端的另一端,在 SELECT count(*) 方面表现得更像复杂视图。根据虚拟 table“背后”的数据库,其性能可能会变化很大

此外,假设 ROW 和 COLUMN 存储 table 将 return 信息 几乎不费力 ,请小心。 HANA 是一个无共享的分布式数据库(在横向扩展设置中),这意味着这种信息只有 table 所在的节点知道。找出行数,例如在 Y 个节点上使用 X 个分区的分区 table 可能需要相当长的时间!

最后,此 原始记录数 仅适用于当前内存中的 table。 运行 当前卸载的 table 上的 SELECT count(*) 将触发加载回答该查询所需的列(基本上所有主键列 + 一些内部 table管理结构)。

在理想情况下(列 table,加载到内存和单个节点上的所有分区)此查询应该 return 瞬时;但其他提到的场景也需要考虑。

希望这能回答这个相当宽泛的问题。