关于达梦数据库统计信息的介绍,可以参考https://www.modb.pro/db/71315,本次内容主要介绍如何在达梦数据库手动进行指定对象的统计信息收集及删除。
1、对DMHR模式下的CITY表上所有的索引生成统计信息。
SQL> CALL SP_TAB_INDEX_STAT_INIT ('DMHR', 'CITY');
DMSQL 过程已成功完成
已用时间: 33.323(毫秒). 执行号:204.
SQL>
2、对库上所有模式下的所有用户表以及表上的所有索引生成统计信息,这个收集统计信息的范围比较广泛,所以在生产环境,建议在业务低峰期执行。
SQL> CALL SP_DB_STAT_INIT ();
DMSQL 过程已成功完成
已用时间: 769.068(毫秒). 执行号:205.
SQL>
3、对DMHR模式下的CITY表上的INDEX33555527索引生成统计信息。
SQL> CALL SP_INDEX_STAT_INIT ('DMHR', 'INDEX33555527');
DMSQL 过程已成功完成
已用时间: 6.309(毫秒). 执行号:207.
SQL>
注意:这里的参数时模式名和索引名,并不需要传入对应的表名。
4、对DMHR模式下的CITY表上的CITY_ID列生成统计信息。
SQL> CALL SP_COL_STAT_INIT ('DMHR', 'CITY', 'CITY_ID');
DMSQL 过程已成功完成
已用时间: 5.403(毫秒). 执行号:208.
SQL>
注意:这里对指定的列生成统计信息,是不支持大字段列和虚拟列的。如下过程,我们对DMHR模式下的CITY表上的LOB_COLUMN(LOB字段列)列生成统计信息,就会提示2685错误信息。
SQL> CALL SP_COL_STAT_INIT ('DMHR', 'CITY', 'LOB_COLUMN');
CALL SP_COL_STAT_INIT ('DMHR', 'CITY', 'LOB_COLUMN');
[-2685]:试图在blob或者clob列上排序或比较.
已用时间: 3.325(毫秒). 执行号:0.
SQL>
5、对DMHR模式下的CITY表上的所有列生成统计信息。
SQL> CALL SP_TAB_COL_STAT_INIT ('DMHR', 'CITY');
DMSQL 过程已成功完成
已用时间: 34.760(毫秒). 执行号:210.
SQL>
6、对DMHR模式下的CITY表上的所有列按照90%的采样率生成统计信息。
SQL> CALL SP_STAT_ON_TABLE_COLS ('DMHR', 'CITY',90);
DMSQL 过程已成功完成
已用时间: 37.139(毫秒). 执行号:211.
SQL>
注意:采样率的范围为[0.5-100.5),超过这个范围会提示“[-21007]:指定的采样率超出范围”错误。
7、对DMHR模式下的CITY表生成统计信息。
SQL> CALL SP_TAB_STAT_INIT ('DMHR', 'CITY');
DMSQL 过程已成功完成
已用时间: 3.551(毫秒). 执行号:232.
SQL>
8、对指定SQL语句所涉及的所有表生成统计信息。如对SQL“SELECT D.* FROM DMHR.DEPARTMENT D, DMHR.EMPLOYEE E WHERE
D.DEPARTMENT_ID = E.DEPARTMENT_ID;”所涉及的表DMHR.DEPARTMENT和DMHR.EMPLOYEE生成统计信息。
SQL> CALL SP_SQL_STAT_INIT ('SELECT D.* FROM DMHR.DEPARTMENT D, DMHR.EMPLOYEE E
WHERE D.DEPARTMENT_ID = E.DEPARTMENT_ID;');
DMSQL 过程已成功完成
已用时间: 28.708(毫秒). 执行号:234.
SQL>
9、清空DMHR模式下的CITY表上的INDEX33555527索引的统计信息。
SQL> CALL SP_INDEX_STAT_DEINIT ('DMHR', 'INDEX33555527');
DMSQL 过程已成功完成
已用时间: 3.611(毫秒). 执行号:235.
SQL>
10、清空DMHR模式下的CITY表上的CITY_ID列的统计信息。
SQL> CALL SP_COL_STAT_DEINIT ('DMHR', 'CITY', 'CITY_ID');
DMSQL 过程已成功完成
已用时间: 1.620(毫秒). 执行号:236.
SQL>
11、清空DMHR模式下的CITY表上所有列的统计信息。
SQL> CALL SP_TAB_COL_STAT_DEINIT ('DMHR', 'CITY');
DMSQL 过程已成功完成
已用时间: 3.169(毫秒). 执行号:237.
SQL>
12、清空DMHR模式下的CITY表的统计信息。
SQL> CALL SP_TAB_STAT_DEINIT ('DMHR', 'CITY');
DMSQL 过程已成功完成
已用时间: 1.445(毫秒). 执行号:238.
SQL>
注意:以下对象不支持统计信息:
1、外部表、 DBLINK 远程表、动态视图、记录类型数组所用的临时表;
2、所在表空间为 OFFLINE 的对象;
3、位图索引,位图连接索引、虚索引、无效的索引、全文索引;
4、BLOB、 IMAGE、 LONGVARBINARY、 CLOB、 TEXT、 LONGVARCHAR等列类型。