达梦数据库更新统计信息脚本
达梦数据库更新统计信息
·
达梦数据库更新统计信息脚本
数据库中索引以及索引涉及到的列对数据库执行计划的影响比较大,所以建议定期更新。
当然除此之外可能有一些条件列、或者表行数统计信息也比较重要,如何涉及可以单独处理。
1、创建辅助表,用以记录统计信息更新情况
CREATE TABLE STAT_EXEC_LOG
(
SQLS VARCHAR(500),
FLAG INT,
GX_TIME DATETIME(6) DEFAULT SYSDATE) ;
2、可以直接执行,也可以放到作业中使用,语句块如下
DECLARE
V_SQL VARCHAR(4000);
USER_NAME VARCHAR2(200);
BEGIN
USER_NAME :='SYSDBA';--这里写需要更新的用户
FOR I IN (
SELECT DISTINCT 'STAT 100 ON '||TABLE_OWNER||'.'||TABLE_NAME||'('||COLUMN_NAME||');' SQLS
FROM ALL_IND_COLUMNS
WHERE INDEX_OWNER=USER_NAME
UNION ALL
SELECT DISTINCT 'STAT 100 ON INDEX '||TABLE_OWNER||'.'||INDEX_NAME||';' SQLS
FROM ALL_IND_COLUMNS
WHERE INDEX_OWNER=USER_NAME )LOOP
BEGIN
V_SQL=I.SQLS;
EXECUTE IMMEDIATE V_SQL;
V_SQL='INSERT INTO STAT_EXEC_LOG(SQLS,FLAG) VALUES('''||I.SQLS||''',1);';
EXECUTE IMMEDIATE V_SQL;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
V_SQL='INSERT INTO STAT_EXEC_LOG(SQLS,FLAG) VALUES('''||I.SQLS||SQLERRM||''',0);';
EXECUTE IMMEDIATE V_SQL;
COMMIT;
END;
END LOOP;
END;
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)