mysql先删建表语句,mysql 存储过程动态执行语句 - 实现动态建表和删表

通过存储过程拼装sql语句,然后执行拼装好的sql语句

主要思路

根据条件从主表获取数据并创建 新的子表

对子表执行 比对,比对结果插入到结果表

删除子表

如果子表的数据仍然比较大,可通过 拼装sql语句给子表建索引,提高比对效率

1、创建子表

set V_EXEC_SQL = concat("create table ", table_sub, "

select row1,row2,row3 row4 from table_main

where row1 = '", v_tmp,"';");

SET @V_EXEC_SQL = V_EXEC_SQL;

PREPARE STMT FROM @V_EXEC_SQL;

EXECUTE STMT ;

DEALLOCATE PREPARE STMT;

-- 建索引

set V_EXEC_SQL = concat ("ALTER TABLE ", table_main ," ADD INDEX ",table_main ,"_idx1 (row1);");

SET @V_EXEC_SQL = V_EXEC_SQL;

PREPARE STMT FROM @V_EXEC_SQL;

EXECUTE STMT ;

DEALLOCATE PREPARE STMT;

2、执行业务比对操作

3、业务操作完成后删除掉新建的子表

set V_EXEC_SQL = concat("drop table IF EXISTS `", table_sub, "` ;");

SET @V_EXEC_SQL = V_EXEC_SQL;

PREPARE STMT FROM @V_EXEC_SQL;

EXECUTE STMT ;

DEALLOCATE PREPARE STMT;

防止存储过程意外退出导致上次执行的时候没有删除掉表格,最好在建表前先执行下删表语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值