MySQL循環(huán)插入千萬級(jí)數(shù)據(jù)
1、創(chuàng)建測試表
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ǔ)過程
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)用測試call test_two1(), 測試10000條數(shù)據(jù)耗時(shí)幾分鐘,如果是千萬級(jí)數(shù)據(jù),這個(gè)速度將無法忍受。
3、優(yōu)化存儲(chǔ)過程
使用批量插入的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
調(diào)用 call insertPro(10000) ,耗時(shí)零點(diǎn)幾秒,這個(gè)速度可以接受。
以上就是MySQL循環(huán)插入千萬級(jí)數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于MySQL循環(huán)插入的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
mysql慢查詢?nèi)罩据嗈D(zhuǎn)_MySQL慢查詢?nèi)罩緦?shí)操
這篇文章主要介紹了mysql慢查詢?nèi)罩据嗈D(zhuǎn)_MySQL慢查詢?nèi)罩緦?shí)操,文章圍繞主題展開詳細(xì)的內(nèi)容戒殺,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
MySQL數(shù)據(jù)庫刪除數(shù)據(jù)自增ID不連續(xù)的實(shí)現(xiàn)示例
本文介紹了MySQL數(shù)據(jù)庫刪除數(shù)據(jù)后自增ID不連續(xù)的問題,文中通過2種方法解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11
MySql如何按照日期進(jìn)行分組統(tǒng)計(jì)
這篇文章主要介紹了MySql如何按照日期進(jìn)行分組統(tǒng)計(jì)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Windows中MySQL數(shù)據(jù)庫下載以及安裝教程(最最新版)
這篇文章主要給大家介紹了關(guān)于Windows中MySQL數(shù)據(jù)庫下載以及安裝的相關(guān)資料,很多朋友剛開始接觸mysql數(shù)據(jù)庫服務(wù)器,對(duì)安裝使用教程不太明白,這里給大家總結(jié)下,需要的朋友可以參考下2023-09-09
用Eclipse連接MySQL數(shù)據(jù)庫的步驟
這篇文章主要介紹了如何用Eclipse連接MySQL數(shù)據(jù)庫,需要的朋友可以參考下2015-08-08
MySQL Administrator 登錄報(bào)錯(cuò)的解決方法
使用MySQL Administrator 登錄,報(bào)錯(cuò): Either the server service or the configuration file could not be found.Startup variable and service section are there for disabled.2010-12-12

