MySQL循环插入千万级数据_Mysql

来源:脚本之家  责任编辑:小易  

mysql不允许匿2113名块,declare必须在5261存储过程中使用,可以如4102下格式创建1653存储过程。create PROCEDURE test()beginDECLARE i bigint;set i=1;while i<=20 doinsert into a1(ID) values (i);set i=i+1;END while;END,可以使用存储过程,declare只能够用在存储过程中间,否则会出错www.zgxue.com防采集请勿采集本网。

1、创建测试表

mysql的项目,需要设计一个快速上载的机制。最后的解决办法是利用了mysql的预处理语句的特性实现的。mysql的预处理语句支持多行数据的预处理,即 insert into

CREATE TABLE `mysql_genarate` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uuid` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=5999001 DEFAULT CHARSET=utf8;

呵呵,我认为可以建立索引,但必须要合理分配IO 为什么: 1:索引是建立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据(加快查询); 2:通常,通过索引查询数据比全表扫描要快. 当ORACLE找出执行查询和Update语句的最佳路径时, ORACL

2、创建一个循环插入的存储过程

一条insert语句批量插入多条记录 常见的insert语句,向数据库中,一条语句只能插入一条数据: insert into persons (id_p, lastname , firstName, city

CREATE DEFINER=`root`@`localhost` PROCEDURE `test_two1`( ) BEGIN DECLARE i INT DEFAULT 0; WHILE i < 3000 DO INSERT INTO mysql_genarate ( uuid ) VALUES( UUID( ) ); SET i = i + 1; END WHILE;END

索引的啦,精确搜索的啦。耶。哈哈。

调用测试call test_two1(), 测试10000条数据耗时几分钟,如果是千万级数据,这个速度将无法忍受。

mysql的索引有5种:主键索引、普通索引、唯一索引、全文索引、聚合索引(多列索引)。 唯一索引和全文索引用的很少,我们主要关注主键索引、普通索引和聚合索引

3、优化存储过程

使用批量插入的sql语句

CREATE DEFINER=`root`@`localhost` PROCEDURE `insertPro`( IN sum INT ) BEGIN DECLARE count INT DEFAULT 0; DECLARE i INT DEFAULT 0; SET @exesql = concat( "insert into mysql_genarate(uuid) values" ); SET @exedata = ""; SET count = 0; SET i = 0; WHILE count < sum DO SET @exedata = concat( @exedata, ",(UUID())" ); SET count = count + 1; SET i = i + 1; IF i % 1000 = 0 THEN SET @exedata = SUBSTRING( @exedata, 2 ); SET @exesql = concat( "insert into mysql_genarate(uuid) values ", @exedata ); PREPARE stmt FROM @exesql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @exedata = ""; END IF; END WHILE; IF length( @exedata ) > 0 THEN SET @exedata = SUBSTRING( @exedata, 2 ); SET @exesql = concat( "insert into mysql_genarate(uuid) values ", @exedata ); PREPARE stmt FROM @exesql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END IF;END

调用 call insertPro(10000) ,耗时零点几秒,这个速度可以接受。

以上就是MySQL循环插入千万级数据的详细内容,更多关于MySQL循环插入的资料请关注真格学网其它相关文章! 您可能感兴趣的文章:mysql 循环批量插入的实例代码详解mysql中循环截取用户信息并插入到目标表对应的字段中MySQL 千万级数据量如何快速分页mysql千万级数据分页查询性能优化mysql千万级数据大表该如何优化?

SQL:CREATE DATABASE /*!32312 IF NOT EXISTS*/`1653stu` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `stu`;/*Table structure for table `xuesheng` */DROP TABLE IF EXISTS `xuesheng`;CREATE TABLE `xuesheng` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(6) NOT NULL, `sex` varchar(6) NOT NULL, `age` smallint(2) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;CODE:<?php/*coded by Yushine, 2011-10-1 12:47*/$config = array();$config['host'] = 'localhost';$config['user'] = 'root';$config['dbpass'] = 'root';$config['dbname'] = 'stu';$con = mysql_connect($config['host'], $config['user'], $config['dbpass']);mysql_query("set names 'UTF8'");if (!$con){ die('Could not connect: ' . mysql_error());}else{ mysql_select_db($config['dbname']); for ($i=1; $i<=10000; $i++) { insert(); }}function insert(){ $name = 'name'.rand(); $sex = array("男","女"); $rand_sex = $sex[array_rand($sex,1)]; $age = rand(10,20); $sql = "INSERT INTO xuesheng (name, sex, age) VALUES ('".$name."', '".$rand_sex."', ".$age.")"; mysql_query($sql);},SQL:CREATEDATABASE/*!410232312IFNOTEXISTS*/`1653stu`/*!40100DEFAULTCHARACTERSETutf8*/;USE`stu`;/*Tablestructurefortable`xuesheng`*/DROPTABLEIFEXISTS`xuesheng`;CREATETABLE`xuesheng`(`id`int(11)unsignedNOTNULLAUTO_INCREMENT,`name`varchar(6)NOTNULL,`sex`varchar(6)NOTNULL,`age`smallint(2)NOTNULL,PRIMARYKEY(`id`))ENGINE=MyISAMDEFAULTCHARSET=utf8;CODE:<?php/*codedbyYushine,2011-10-112:47*/$config=array();$config['host']='localhost';$config['user']='root';$config['dbpass']='root';$config['dbname']='stu';$con=mysql_connect($config['host'],$config['user'],$config['dbpass']);mysql_query("setnames'UTF8'");if(!$con){die('Couldnotconnect:'.mysql_error());}else{mysql_select_db($config['dbname']);for($i=1;$i<=10000;$i++){insert();}}functioninsert(){$name='name'.rand();$sex=array("男","女");$rand_sex=$sex[array_rand($sex,1)];$age=rand(10,20);$sql="INSERTINTOxuesheng(name,sex,age)VALUES('".$name."','".$rand_sex."',".$age.")";mysql_query($sql);}内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 如何进行mysql的优化
  • mysql中multiple primary key defined报错的解决办法
  • 解决navicat远程连接mysql出现 10060 unknow error的方法
  • 关于mysql自增id,你需要知道的
  • 详解mysql的用户密码过期功能
  • mysql创建表的sql语句详细总结
  • mysql安装及登录详解
  • mac下忘记mysql密码重新设置密码的图文教程
  • mysql事务隔离级别之读提交详解
  • 深入mysql "on duplicate key update" 语法的分析
  • 求:循环往mysql 数据库插入10000条记录的php代码
  • Navicat for MySQL循环添加大量数据用什么
  • MySQL使用存储过程插入千万级数据如何提升
  • php写个循环往mysql数据库插入100w条数据,每次插...
  • 大批量插入数据,mysql批量更新与插入多种
  • mysql 数据库,表每天会插入30W条数据,该表数据千...
  • mysql 怎么循环插入多条数据
  • mysql 千万级数据量插入和查询应该怎么优化
  • Mysql 千万级数据量插入和查询应该怎么优化
  • mysql 循环插入数据不能多于23条
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页mysql 循环批量插入的实例代码详解mysql中循环截取用户信息并插入到目标表对应的字段中mysql 千万级数据量如何快速分页mysql千万级数据分页查询性能优化mysql千万级数据大表该如何优化?mysql中multiple primary key defined报错的解决办法解决navicat远程连接mysql出现 10060 unknow error的方法关于mysql自增id,你需要知道的详解mysql的用户密码过期功能mysql创建表的sql语句详细总结mysql安装及登录详解mac下忘记mysql密码重新设置密码的图文教程mysql事务隔离级别之读提交详解深入mysql "on duplicate key update" 语法的分析mysql安装图解 mysql图文安装教程can""""t connect to mysql servwindows下mysql5.6版本安装及配置mysql字符串截取函数substring的mysql创建用户与授权方法mysql提示:the server quit withmysql日期数据类型、时间类型使用mysql——修改root密码的4种方法mysql update语句的用法详解mysql之timestamp(时间戳)用法安装和使用percona-toolkit来辅助操作mysmysql out of memory (needed 16777224 bmac下mysql5.7忘记root密码的解决方法快速了解mysql 索引mysql压力测试方法 如何使用mysqlslap测试浅谈innodb隔离模式的使用对mysql性能造成mysql的一些功能实用的linux shell脚本分mysql数据库详解(基于ubuntu 14.0.4 lts mysql存储过程中的基本函数和触发器的相关mysql的时间差函数timestampdiff、datedi
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved