MySQL循環(huán)插入千萬(wàn)級(jí)數(shù)據(jù)
1、創(chuàng)建測(cè)試表
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;
2、創(chuàng)建一個(gè)循環(huán)插入的存儲(chǔ)過(guò)程
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
調(diào)用測(cè)試call test_two1()
, 測(cè)試10000條數(shù)據(jù)耗時(shí)幾分鐘,如果是千萬(wàn)級(jí)數(shù)據(jù),這個(gè)速度將無(wú)法忍受。
3、優(yōu)化存儲(chǔ)過(guò)程
使用批量插入的sql語(yǔ)句
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
調(diào)用 call insertPro(10000) ,耗時(shí)零點(diǎn)幾秒,這個(gè)速度可以接受。
以上就是MySQL循環(huán)插入千萬(wàn)級(jí)數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于MySQL循環(huán)插入的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MySql使用skip-name-resolve解決外網(wǎng)鏈接客戶端過(guò)慢問題
在騰訊云上面搭建的mysql使用開發(fā)的電腦上navicat進(jìn)行訪問時(shí)總是特別的慢,原來(lái)是Mysql會(huì)對(duì)請(qǐng)求的地址進(jìn)行域名解析,開發(fā)的電腦并沒有域名,所以會(huì)導(dǎo)致特別的慢,下面通過(guò)本文給大家分享MySql使用skip-name-resolve解決外網(wǎng)鏈接客戶端過(guò)慢問題2017-07-07IPv6設(shè)置后如何解決MySQL無(wú)法連接localhost的問題
這篇文章主要介紹了IPv6設(shè)置后如何解決MySQL無(wú)法連接localhost的問題,需要的朋友可以參考下2016-04-04mySQL UNION運(yùn)算符的默認(rèn)規(guī)則研究
SQL UNION運(yùn)算符的默認(rèn)規(guī)則研究,學(xué)習(xí)union的朋友可以參考下。2009-07-07Win7 64位 mysql 5.7下載安裝常見問題小結(jié)
這篇文章主要介紹了Win7 64位 mysql 5.7下載安裝常見問題小結(jié),本文圖文并茂給大家介紹的非常詳細(xì),需要的朋友參考下吧2017-06-06與MSSQL對(duì)比學(xué)習(xí)MYSQL的心得(七)--查詢
在這個(gè)《與MSSQL對(duì)比學(xué)習(xí)MYSQL的心得》系列里面,我一直都把MYSQL跟SQLSERVER進(jìn)行比較,相互進(jìn)行比較是學(xué)習(xí)一樣?xùn)|西比較好的方法2014-08-08