说到msyql引擎,InnoDB和MyISam的区别。
我们暂时只要知道两点:
1.InnoDB支持外键和事物,而MyISam不支持
2.事务性表应该使用InnoDB,频繁读取如select操作很频繁的应该使用MyISam引擎。
我们新建了2张表:user_sys和user_sys2,字段都一样,只是一个使用InnoDB引擎,一个使用MyISam引擎。
我们使用mysql存储过程的方式,给表填充数据。
使用mysql客户端,新建函数—选择存储过程。
BEGIN
SET @num=1;
WHILE @num<=20 DO
IF t=1 THEN
INSERT INTO user_sys(user_name,user_pwd)value(concat('user',@num),'123456');
ELSE
INSERT INTO user_sys2(user_name,user_pwd)value(concat('user',@num),'123456');
END IF;
SET @num=@num+1;
END WHILE;
END;
上面语句,定义了变量num,<=20为条件循环执行插入表的SQL语句,根据传入的参数不同,插入的insert语句不同。
SQL预览:
CREATE PROCEDURE `myshop`.`<function_name>`(in t int)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
SET @num=1;
WHILE @num<=20 DO
IF t=1 THEN
INSERT INTO user_sys(user_name,user_pwd)value(concat('user',@num),'123456');
ELSE
INSERT INTO user_sys2(user_name,user_pwd)value(concat('user',@num),'123456');
END IF;
SET @num=@num+1;
END WHILE;
END;
如何调用mysql的存储过程:
call initdb(1);
#initdb是我们上面定义存储过程时保持的名字
#并且上面的存储过程我们也定义了参数
#所以调用类似函数的方式
最终就完成了快速的给user_sys表和user_sys2表,插入20条数据。
如果要插入10000条,只需要修改成@num<=10000