MySQL用存储过程创建100W的数据

如题

1.100W条数据的插入,定义WHILE循环从1-100W,insert语句执行100W次,从晚上11点跑到第二天早上10点,共耗时11小时!!!

 1 DELIMITER $$
 2
 3 DROP PROCEDURE IF EXISTS `Havefun`.`create_100w_data` $$
 4
 5 CREATE
 6     /*[DEFINER = { user | CURRENT_USER }]*/
 7     PROCEDURE `Havefun`.`create_100w_data`()
 8     /*LANGUAGE SQL
 9     | [NOT] DETERMINISTIC
10     | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
11     | SQL SECURITY { DEFINER | INVOKER }
12     | COMMENT ‘string‘*/
13     BEGIN
14     DECLARE i INT;
15     DROP TABLE IF EXISTS `Havefun`.`100w_data`;
16     CREATE TABLE `100w_data` (
17   `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ‘主ID‘,
18   `name` CHAR(20) NOT NULL DEFAULT ‘‘ COMMENT ‘名字‘,
19   `status` INT(1) UNSIGNED NOT NULL DEFAULT ‘99‘ COMMENT ‘状态,1-审核通过 0-未通过 99-待审核‘,
20   `type` VARCHAR(50) NOT NULL DEFAULT ‘‘ COMMENT ‘类型‘,
21   PRIMARY KEY (`id`)
22 ) ENGINE=INNODB DEFAULT CHARSET=utf8;
23
24     SET i=1;
25     WHILE (i<1000000) DO
26     INSERT INTO `100w_data`(`name`, `status`, `type`) VALUES(CONCAT(‘data_‘,i), ‘99‘, ‘PROC‘);
27     SET i=i+1;
28     END WHILE;
29
30     END$$
31
32 DELIMITER ;

2.定义插入的开始点与结束点,这样可以多进程执行存储过程,提高速率。(也可以用PHP脚本来跑)

 1 DELIMITER $$
 2
 3 USE `Havefun`$$
 4
 5 DROP PROCEDURE IF EXISTS `create_i_data`$$
 6
 7 CREATE DEFINER=`root`@`%` PROCEDURE `create_i_data`(IN _start INT, IN _end INT)
 8 BEGIN
 9     DECLARE i INT;
10     DROP TABLE IF EXISTS `Havefun`.`amt_data`;
11     CREATE TABLE `amt_data` (
12   `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ‘主ID‘,
13   `name` CHAR(20) NOT NULL DEFAULT ‘‘ COMMENT ‘名字‘,
14   `status` INT(1) UNSIGNED NOT NULL DEFAULT ‘99‘ COMMENT ‘状态,1-审核通过 0-未通过 99-待审核‘,
15   `type` VARCHAR(50) NOT NULL DEFAULT ‘‘ COMMENT ‘类型‘,
16   `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘创建时间‘,
17   `update_time` INT(11) NOT NULL COMMENT ‘更新时间‘,
18   PRIMARY KEY (`id`)
19 ) ENGINE=INNODB DEFAULT CHARSET=utf8;
20     SET i=_start;
21     WHILE (i<_end) DO
22     INSERT INTO `amt_data`(`name`, `status`, `type`, `create_time`, `update_time`) VALUES(CONCAT(‘data_‘,i), ‘99‘, ‘PROC‘,NOW(),UNIX_TIMESTAMP(NOW()));
23     SET i=i+1;
24     END WHILE;
25     END$$
26
27 DELIMITER ;
时间: 2024-08-13 22:51:56

MySQL用存储过程创建100W的数据的相关文章

MySQL之存储过程创建和调用

一.MySQL存储过程_创建-调用 1.1存储过程:SQL中的"脚本"1.创建存储过程2.调用存储过程3.存储过程体4.语句标签块 二.MySQL存储过程简单介绍: 存储过程(Stored Procedure):提示:#SQL语句:先编译后执行 一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行. 优点(为什么要用存储过程?): ①将重复性很高的一些操作,封装到一个存储过程中,简化了对这些SQL的调

MySQL使用存储过程创建用户

周五接到开发朋友的一个小求助,需要在MySQL 测试环境创建一个自动创建用户的存储过程,要求帮忙编写一下. MySQL version 5.5.17 OS version CentOS 6.4 存储过程内容如下: DELIMITER // CREATE PROCEDURE cr_user(IN p_uname VARCHAR(20), IN p_passwd VARACHAR(200)) BEGIN DECALRE p_sqlt VARCHAR(1000); SET p_sqlt = conca

Mysql利用存储过程插入400W条数据

CREATE TABLE dept( /*部门表*/ deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, /*编号*/ dname VARCHAR(20) NOT NULL DEFAULT "",/*名称*/ loc VARCHAR(13) NOT NULL DEFAULT "" /*地点*/ )ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE emp( /*EMP雇员表*/ e

MySql || 快速创建100w条记录

平时每个开发者都会讨论数据量大时,sql的优化问题.但是并不是每个人都会有100w的数据量可以用来实战,那么今天我们就自己动手,模拟一个100w数据量的表. 创建原理 其实创建的方法有很多,有快的也有慢的.本博客中写的当然不是最快的那个,但确实是比较好操作和理解的.那么我先来说明一下它的原理:它是利用mysql中的在MEMORY引擎的特点,用于快速的插入100w的数据在内存中存放,然后再利用sql插入到目标的表当中. 操作步骤 创建表t_user,这是用于存放数据的表. 1 CREATE TAB

【转】图解MySql命令行创建存储过程

一 操作实例 首先登录mysql: 使用source命令,从命令行执行sql脚本,创建表: 创建第一个存储过程: 事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码: 调用一下,成功了: 创建一个带输出参数的存储过程,返回book表的记录数:创建成功: 如下的调用语句失败: 先在命令行用set定义一个变量:定义变量成功:后面的调用语句失败: 参数是放到括号里的:调用成功: select @s1,显示了@s1的当前值,为9,表的记录数: 调用时

MySQL之存储过程实例讲解(创建、调用、查看、修改、删除)

1.存储过程简介: 存储过程,英文名Stored Procedure,说简单点,就是将MySQL语句集或必要的程序封装在一个结构体里面,存储在数据库中,供外部调用的一个数据库对象,存储过程在思想上很简单,就是SQL代码的封装与重用. 优点 存储过程可封装,并隐藏复杂的商业逻辑. 存储过程可以回传值,并可以接受参数. 存储过程可以返回多个值,而普通函数只能返回一个值. 存储过程无法使用 SELECT 指令来运行,因为它是子程序,与查看表,数据表或用户定义函数不同. 存储过程可以用在数据检验,强制实

MYSQL中存储过程的创建,调用及语法

MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句.特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗.现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高. 第一部分:创建一个简单的无参的存储过程 1 用mysql客户端登入

mysql存储过程之游标遍历数据表

原文:mysql存储过程之游标遍历数据表 今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕迹. 1 BEGIN 2 DECLARE Done INT DEFAULT 0; 3 4 DECLARE CurrentLingQi INT; 5 6 DECLARE ShizuName VARCHAR(30); 7 /* 声明游标 */ 8 DECLARE rs CURSOR FOR SELECT

mysql写存储过程/PHP写和调用存储过程

PHP调用MYSQL存储过程实例 来源: http://blog.csdn.net/ewing333/article/details/5906887 实例一:无参的存储过程 $conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!"); mysql_select_db('test',$conn); $sql = " create procedure myproce() begin INSERT IN