Mysql使用儲存過程快速新增百萬資料
導讀 | 這篇文章主要介紹了Mysql使用儲存過程快速新增百萬資料,本文透過例項程式碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑑價值,需要的朋友可以參考下 |
前言
為了體現不加索引和新增索引的區別,需要使用百萬級的資料,但是百萬資料的表,如果使用一條條新增,特別繁瑣又麻煩,這裡使用儲存過程快速新增資料,用時大概4個小時。
建立一個使用者表
CREATE TABLE `t_sales` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT '使用者名稱', `password` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '密碼 MD5儲存', `register_time` timestamp NULL DEFAULT NULL COMMENT '註冊時間', `type` int(1) DEFAULT NULL COMMENT '使用者型別 1,2,3,4 隨機', PRIMARY KEY (`id`), KEY `idx_username` (`username`) USING BTREE )
然後建立儲存過程,批次新增資料。
使用者名稱以常量和數字拼接
密碼是MD5密碼
註冊時間是當前時間隨機往前推幾天
type是取1-4隨機範圍值
create procedure salesAdd() begin declare i int default 11; while i <= 4000000 do insert into blog.t_sales (`username`,`password`,`register_time`,type) values (concat("jack",i),MD5(concat("psswe",i)),from_unixtime(unix_timestamp(now()) - floor(rand() * 800000)),floor(1 + rand() * 4)); set i = i + 1; end while; end
然後呼叫儲存過程
call salesAdd()
改進版
雖然使用儲存過程新增資料相對一個個新增更加便捷,快速,但是新增幾百萬資料要花幾個小時時間也是很久的,後面在網上找到不少資料,發現mysql每次執行一條語句都預設自動提交,這個操作非常耗時,所以在在新增去掉自動提交。設定 SET AUTOCOMMIT = 0;
create procedure salesAdd() begin declare i int default 1; set autocommit = 0; while i <= 4000000 do insert into blog.t_sales (`username`,`password`,`register_time`,type) values (concat("jack",i),MD5(concat("psswe",i)),from_unixtime(unix_timestamp(now()) - floor(rand() * 800000)),floor(1 + rand() * 4)); set i = i + 1; end while; set autocommit = 1; end
執行時間387秒,約為六分鐘,其中還有一半時間用於md5、隨機數的計算。
[SQL] call salesAdd(); 受影響的行: 0 時間: 387.691s
到此這篇關於Mysql使用儲存過程快速新增百萬資料的文章就介紹到這了
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2791120/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySql資料庫——儲存過程MySql資料庫儲存過程
- Mysql 儲存過程的使用MySql儲存過程
- mysql中使用儲存過程生成1億條資料MySql儲存過程
- MySQL的寫入資料儲存過程MySql儲存過程
- Laravel 中使用 MySQL 儲存過程LaravelMySql儲存過程
- mysql 儲存過程MySql儲存過程
- 儲存過程_造使用者資料儲存過程
- 23. 使用MySQL之使用儲存過程MySql儲存過程
- MySQL儲存過程中如何使用ROLLBACKMySql儲存過程
- MySQL儲存過程的建立和使用MySql儲存過程
- 資料庫儲存過程資料庫儲存過程
- MySQL---------儲存過程MySql儲存過程
- mysql儲存過程整理MySql儲存過程
- MySQL之儲存過程MySql儲存過程
- Mysql資料庫建立儲存過程實現往資料表中新增欄位的方法MySql資料庫儲存過程
- Mysql儲存過程中使用多遊標MySql儲存過程
- 基於儲存過程的百萬級測試資料自動生成儲存過程
- 使用儲存過程(PL/SQL)向資料庫中儲存BLOB物件儲存過程SQL資料庫物件
- mysql如何呼叫儲存過程MySql儲存過程
- 【資料庫】資料庫儲存過程(一)資料庫儲存過程
- mySql 儲存過程與函式MySql儲存過程函式
- MySQL 儲存過程和函式MySql儲存過程函式
- mysql儲存過程的引數MySql儲存過程
- MySQL儲存過程和函式MySql儲存過程函式
- MySQL儲存過程 (即函式)MySql儲存過程函式
- 【SqlServer】清除過期資料的儲存過程SQLServer儲存過程
- MySQL儲存過程裡動態SQL的使用UXMySql儲存過程UX
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- 恢復MySQL資料庫建立儲存過程是遇到錯誤MySql資料庫儲存過程
- mysql 儲存過程 procedure 批次建表MySql儲存過程
- Mysql 5.7儲存過程的學習MySql儲存過程
- MySQL--儲存過程與檢視MySql儲存過程
- MySQL儲存過程語句及呼叫MySql儲存過程
- MySQL入門--儲存過程(PROCEDURE)和儲存函式(FUNCTION)MySql儲存過程儲存函式Function
- 淺談mysql資料庫技術,輕鬆玩轉儲存過程MySql資料庫儲存過程
- 爬蟲系列:使用 MySQL 儲存資料爬蟲MySql
- oracle使用儲存過程將表資料以excel格式匯出Oracle儲存過程Excel
- 使用SQL SERVER儲存過程實現歷史資料遷移SQLServer儲存過程