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儲存過程
- Mysql 儲存過程的使用MySql儲存過程
- mysql中使用儲存過程生成1億條資料MySql儲存過程
- MySQL的寫入資料儲存過程MySql儲存過程
- MySQL儲存過程詳解 mysql 儲存過程linkMySql儲存過程
- Laravel 中使用 MySQL 儲存過程LaravelMySql儲存過程
- mysql 遊標的使用(儲存過程)MySql儲存過程
- mysql 儲存過程MySql儲存過程
- Mysql 資料庫水平分表 儲存過程MySql資料庫儲存過程
- 資料庫儲存過程資料庫儲存過程
- 23. 使用MySQL之使用儲存過程MySql儲存過程
- MySQL儲存過程的建立和使用MySql儲存過程
- MySQL5儲存過程使用(轉)MySql儲存過程
- MySQL儲存過程中如何使用ROLLBACKMySql儲存過程
- MySql儲存過程—2、第一個MySql儲存過程的建立MySql儲存過程
- mysql儲存過程整理MySql儲存過程
- MySQL之儲存過程MySql儲存過程
- [MYSQL -23儲存過程]MySql儲存過程
- MYSQL儲存過程管理MySql儲存過程
- mysql儲存過程例子MySql儲存過程
- mysql的儲存過程MySql儲存過程
- MySQL---------儲存過程MySql儲存過程
- Mysql資料庫建立儲存過程實現往資料表中新增欄位的方法MySql資料庫儲存過程
- 基於儲存過程的百萬級測試資料自動生成儲存過程
- 使用儲存過程儲存過程
- 儲存過程返回資料集儲存過程
- 【Mysql】Mysql儲存過程學習MySql儲存過程
- Mysql儲存過程中使用多遊標MySql儲存過程
- 使用儲存過程(PL/SQL)向資料庫中儲存BLOB物件儲存過程SQL資料庫物件
- Mysql利用儲存過程插入500W條資料MySql儲存過程
- MySql 儲存過程 臨時表 無法插入資料MySql儲存過程
- mysql如何呼叫儲存過程MySql儲存過程
- mysql儲存過程案例解析MySql儲存過程
- mysql儲存過程詳解MySql儲存過程
- mysql儲存過程的修改MySql儲存過程
- MySQL儲存過程SAVEPOINT ROLLBACK toMySql儲存過程
- Mysql 的儲存過程和儲存函式MySql儲存過程儲存函式