我的问题是,当我运行查询时,每当我们从表名上运行select count(*)
时,会花费更多的时间和使用一些内存。
我想比较虚拟表和物理表的计数是否匹配?实时复制工作正常与否?
我可以从
得到物理表计数SELECT "TABLE_NAME","RECORD_COUNT","SCHEMA_NAME" FROM "SYS"."M_TABLES"
这里的问题是不使用select count(*) from "VT_<Table_name>"
,如何从特定模式获得所有虚拟表的计数?在HANA中是否有任何标准表来从特定模式中获取虚拟表的计数?
或
还有其他方法可以获得计数而不使用count(*)
方法吗?
简短的回答:不,没有其他办法。
HANA无法知道外部资源中的记录计数(我认为这适用于每个软件),因为它无法控制它:它不知道是否有人在远程源删除或插入新数据以更新其本地系统表中的记录计数,而对于HANA自己的表它可以(只是在事务处理中包含此操作)。
此外,可以将视图作为远程源(也许表值函数也允许用于某些dbms,因为从消费的角度来看,我没有看到任何SELECT
可访问对象之间的任何差异),因此一致行计数的逻辑变得非常复杂(源数据库不能报告视图中的记录计数,因为它需要首先计算其输出)。
假设它在本地有这些计数,将导致select count(*) from remote_source
每N秒运行一次,这是资源浪费。