1. 程式人生 > >MySQL使用儲存實現快速建立多分表

MySQL使用儲存實現快速建立多分表

經常設計資料庫,有時候分表數量比較大,單個建立實在浪費時間,於是寫了一個儲存模板,可以快速建立多張分表,比如:

-- 程式儲存器
DROP PROCEDURE IF EXISTS `gameLog_month`; 
create procedure gameLog_month(in val_s int, in val_e int)
begin
declare i int;
set i=val_s;
while i<val_e+1 do
set @sql_create_table = concat(
'CREATE TABLE IF NOT EXISTS hunan_db_log_'
, i, "( `id` int(11) NOT NULL AUTO_INCREMENT, `gameType` varchar(20) DEFAULT '' COMMENT '遊戲類別', `userId` int(11) DEFAULT 0 COMMENT '玩家id', `deskId` int(11) DEFAULT 0 COMMENT '玩家桌子ID', `deskNum` tinyint(2) DEFAULT 0 COMMENT '座位標號1;2;3;4;5;6,1號位代表建立者', `tableMode` tinyint(2) DEFAULT 0 COMMENT '桌子型別:5棋牌館模式', `score` int(11) DEFAULT 0 COMMENT '分數', `scoreBase` int(11) DEFAULT 0 COMMENT '分數基數', `playSign` int(11) DEFAULT 0 COMMENT '棋牌館建立標識', `agentId` int(11) DEFAULT 0 COMMENT '代理ID', `logTime` int(11) DEFAULT 0 COMMENT '日誌時間', `winlevel` tinyint(2) DEFAULT 0 COMMENT '勝利級別0-10,預設0不區別,10大贏家', `createTime` datetime DEFAULT NULL COMMENT '建立時間', PRIMARY KEY (`id`), INDEX `gameType` (`gameType`) USING BTREE, INDEX `userId` (`userId`) USING BTREE, INDEX `logTime` (`logTime`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='棋牌館玩家日誌資訊,按月分表處理' "
);
PREPARE sql_create_table FROM @sql_create_table; EXECUTE sql_create_table; set i=i+1; end while; end;