mysql中对数据库的每个表执行优化的存储过程
说明:此处为《高性能mysql(第二版)》中的示例代码,除了数据库名 其他未经更改。仅供学习及参考
对数据库的每个表执行优化的存储过程
CREATE PROCEDURE `inventory`.`optimize_table` (db_name VARCHAR(64))
BEGIN
DECLARE t VARCHAR(64);
DECLARE done INT DEFAULT 0;
DECLARE c CURSOR FOR
SELECT table_name FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA=db_name AND TABLE_TYPE='BASE TABLE';
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
OPEN c;
tables_loop:LOOP
FETCH c INTO t;
IF done THEN
CLOSE c;
LEAVE tables_loop;
END IF;
SET @stmt_text:=CONCAT("OPTIMIZE TABLE ",db_name,'.',t);
PREPARE stmt FROM @stmt_text;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END LOOP;
CLOSE c;
END
语句2:
CREATE PROCEDURE `inventory`.`optimize_tables2` (db_name VARCHAR(64))
BEGIN
DECLARE t VARCHAR(64);
DECLARE done INT DEFAULT 0;
DECLARE c CURSOR FOR
SELECT table_name FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA=db_name AND TABLE_TYPE='BASE TABLE';
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
OPEN c;
REPEAT
FETCH c INTO t;
IF NOT done THEN
SET @stmt_text:=CONCAT("OPTIMIZE TABLE ",db_name,'.',t);
PREPARE stmt FROM @stmt_text;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
UNTIL done END REPEAT;
CLOSE c;
END
调用时为call optimize_tables2('库名');
或者
call optimize_tables('库名');
最新文章
- 关于磁盘错误disk error
- VC++ Post 方法 上传数据到web服务器
- GPU高性能计算-CUDA
- 用javascript写Android和iOS naitve应用,实在炫酷。
- Web服务器常用设置
- 个人开源作品,即时通讯App支持文本、语音、图片聊天
- 创建泛类集合List以及数组转集合,集合转数组的应用
- Java 代码优化过程的实例介绍
- [Javascript] Lodash: Refactoring Simple For Loops (_.find, _.findLast, _.filter)
- 不用找了,比较全的signalR例子已经为你准备好了.
- Linux学习一些在Terminal可以用到的快捷键及Shell常用的通配符
- Spring Boot 系列教程18-itext导出pdf下载
- mysql控制台出现“unknown column 'password' in 'field list'问题
- Cocos2d-x Lua游戏开发Mac环境搭建以及一点点感悟
- *42. Trapping Rain Water 接雨水
- npm修改淘宝原
- 今天给大家补充一下 background 用法
- java初始重点语法
- WPF Combobox选中事件
- f5基本介绍