1:只要已經存在表結構的
第一種方式:
CREATE TABLE T1 SELECT * FROM mysql.user WHERE 1=2;
第二種方式:
CREATE TABLE T2 LIKE mysql.user;
mysql> CREATE TABLE t1 -> LIKE mysql.user; Query OK, 0 rows affected (0.01 sec) mysql> CREATE TABLE t2 -> SELECT * FROM mysql.user -> WHERE 1=2; Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0
2:表結構和數據都要的
CREATE TABLE T1 SELECT * FROM mysql.user
3:需要100W的數據量
DROP TABLE IF EXISTS testdata; CREATE TABLE testdata (id int,name varchar(10)); DROP PROCEDURE IF EXISTS pro_testdata; DELIMITER && CREATE PROCEDURE pro_testdata(IN inr int) BEGIN DECLARE i INT DEFAULT 0; START TRANSACTION; WHILE i<inr DO INSERT INTO testdata(id,name) values(i,'gechong'); SET i=i+1; END WHILE; COMMIT; END && DELIMITER ;
call pro_testdata(1000000);
mysql> SELECT COUNT(1) FROM testdata; +----------+ | COUNT(1) | +----------+ | 0 | +----------+ 1 row in set (0.00 sec) mysql> CALL pro_testdata(10000); Query OK, 0 rows affected (0.24 sec) mysql> SELECT COUNT(1) FROM testdata; +----------+ | COUNT(1) | +----------+ | 10000 | +----------+ 1 row in set (0.00 sec)
如果表結構不滿足要求做簡單修改即可。
參數類型:in、out、inout
in表示:調用者傳給存儲過程
out表示:存儲過程返回給調用者的
inout:MySQL 存儲過程 inout 參數跟 out 類似,都可以從存儲過程內部傳值給調用者。不同的是:調用者還可以通過 inout 參數傳遞值給存儲過程。
DROP PROCEDURE IF EXISTS proinout; DELIMITER && CREATE PROCEDURE proinout (in id1 int,out id2 int) BEGIN SELECT id INTO id2 FROM t WHERE id = id1; END && DELIMITER ;
調用
call proinout(100,@id_num);
SELECT @id_num;