關於mysql資料庫快速插入方法

2021-06-21 13:17:04 字數 1240 閱讀 3928

寫技術類文章出於三個目的,第一,對自己寫過的東西做一次總結,溫故而知新,第二,希望好友中的大神門對小弟的方法加以改進和建議,第三,對於剛入門的程式設計師提供有限的建議和方法,人幫我,我幫人!

關於mysql 的插入語句,大家最熟悉不過了, 下面這兩句語句實現對mysql資料庫的插入

sprintf(query, "insert into useritem (username,name,type,level,amount) values ( '%s','%s','%s','%s',1);",tusername,buyname,type,level);

mysql_query(&_mysql, query);

但大家有沒有想過如果同時上千條,上萬條,甚至插入百萬條記錄,這時就不的不考慮乙個效率問題了,

普通處理方法:用for()迴圈插入

for(int i=0;i<1000;i++)

上述方法當然能夠實現需求,但是效率不行,大約插入1000條幾率所用時間為7s

那有沒有方法提高效率?ps:這句話好sb,如果沒有,我還寫個蝦球哦!呵呵~~~~~

mysql預設的資料提交操作模式是自動提交模式(autocommit)。這就表示每個查詢都被當做乙個單獨的事務自動執行。我們可以通過設定autocommit的值改變是否是自動提交autocommit模式

mysql預設的儲存引擎是myisam,myisam儲存引擎不支援事務處理,所以改變autocommit沒有什麼作用,innodb儲存引擎支援事務處理。innodb表引擎下關閉mysql自動事物提交可以大大提高資料插入的效率,這是因為如果需要插入1000條資料,mysql會自動發起(提交)1000次的資料寫入請求,如果把autocommit關閉掉,通過程式來控制,只要一次commit就可以搞定:

bool connectdatabase()  //連線資料庫

if( ! mysql_real_connect(&_mysql,host_name,user_name,password,db_name,0,null,0))

else    }

sprintf(query, "insert into useritem (username,name,type,level,amount) values ( '%s','%s','%s','%s',1);",tusername,buyname,type,level);

for( i = 0;i<1000i++)

}紅色**段就是實現快速插入的**,這樣經過測試 插入1000紀錄大約所花時間 2.4s,隨著插入數量越多,優勢就體現的更明顯

快速插入mysql資料庫的方法

mysql版本為5.1 開啟mysql的命令列工具,先 use 資料庫 然後輸入 load data local infile f insertcardtotalinfo2.sql into table cardtotalinfo code,companyid,faceprice,purchasep...

關於使用JDBC連線MySQL資料庫插入中文亂碼

使用jdbc連線mysql時,在使用preparestatement去插入一條insert語句是,如果所傳的引數是中文的話,很多可能會在資料庫裡面顯示亂碼。而你在後台列印出來的資料並不是亂碼。這時候的原因可能有以下 一 資料庫建表時為對 的編碼方式進行指定,使 編碼方式停留在 charset lat...

Python插入mysql資料庫

import pymysql as db data name input 告訴我你叫什麼 data age input 請輸入你的出生年月日 格式為 2019 01 01 data address input 請輸入你來自 鏈結資料庫 conn db.connect host 192.168.88....