本文介绍影响 OceanBase 数据库执行 count(*) 时间的因素以及缩短 count(*) 执行时间的方法。
适用版本
OceanBase 数据库所有版本
执行 count(*) 的时间
OceanBase 数据库中,执行 count(*)
的时间不仅与选择的行数,还与行的长度相关。这是由于对主表的扫描代价与行长度是相关的。
如何缩短 count(*) 的执行时间
如果您希望在更短的时间执行 count(*)
,可以通过以下两个方式进行规避。
-
在查询中通过 SQL Hint 指定并行度。例如指定并行度为 16。
obclient> SELECT /*PARALLEL(16)*/ count(*) FROM $table;
-
为主表创建一个只包含一列的索引。
例如为
$table
的id
列创建索引。obclient> CREATE INDEX ind ON $table(id);