暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

达梦数据库表属性COUNTER

杜小台 2025-04-15
227

1表属性COUNTER
1.1背景
使用达梦数据库再也不用担心使用COUNT()了。
1.2概念
《DM8_SQL语言使用手册》中描述:WITH COUNTER:在表上维护当前表内的行数;WITHOUT COUNTER:表上只维护一个非实时的大概的行数;对用户的影响:例如 SELECT COUNT(
) FROM test; 如果表 test 是 WITHCOUNTER 属性,服务器直接取行数返回即可,可以快速响应;如果表 test
是 WITHOUT COUNTER 属性,服务器需要先扫描 B 树获取行数返回后才能响应。不同的场景,根据需要灵活选择 COUNTER 属性。WITH COUNTER 属性可以通过 ALTER TABLE 语句修改。若省略该选项,默认是 WITHCOUNTER 属性。

2创建新表
2.1创建一个普通表
CREATE TABLE COUNTER_DEMO (ID INT);
image.png
2.1.1分析执行计划
EXPLAIN SELECT COUNT(*) FROM COUNTER_DEMO;
image.png
通过执行计划走的是FAGR2,快速聚集。
2.2创建一个WITHOUT COUNTER属性表
CREATE TABLE COUNTER_DEMO_WITHOUT(ID INT )STORAGE(WITHOUT COUNTER)
image.png

2.2.1分析执行计划
EXPLAIN SELECT COUNT(*) FROM COUNTER_DEMO_WITHOUT;
image.png

分析执行,走的是CSCN2(聚集索引扫描)。AAGR2(简单聚集))

3修改旧表
3.1修改COUNTER_DEMO_WITHOUT
ALTER TABLE COUNTER_DEMO_WITHOUT WITH COUNTER
image.png
3.1.1查看执行计划
EXPLAIN SELECT COUNT(*) FROM COUNTER_DEMO_WITHOUT;
image.png
执行计划已改为快速聚集
3.2修改COUNTER_DEMO
ALTER TABLE COUNTER_DEMO WITHOUT COUNTER;
image.png

3.2.1查看执行计划
EXPLAIN SELECT COUNT() FROM COUNTER_DEMO;
image.png
执行计划,已经走CSCN2(聚集索引扫描)
4总结
该属性是默认建表就打开的功能。因此在特殊业务场景数据加工中,无需在担心因为count(
)时间太长,而影响数据性能。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论