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;
