1. 程式人生 > >提升mysql大資料插入或者更新資料條目的執行效率

提升mysql大資料插入或者更新資料條目的執行效率

我在做專案的時候有這麼個需求,我需要對每天產生的16000條資料進行批量的更新修改,

首先我們先在資料表裡面查詢新的資料條目是否已經在現有的表裡存在,如果存在就執行update方法,如果不存在就直接執行insert方法

我的做法就是

for(迴圈16000條資料){

String sql = "select * from user where userid=? and uname=? and email=?";   查詢是否已經存在

if(不存在){

sql = "insert into user..................."  //直接插入

} else{

sql = "update user    ,,,,,,,   wehre   userid = ? and uname = ? and emial = ?"  //更新

}

}

這樣簡單的幾條操作,在我一段日子的測試中發現,大概要耗費2個半小時的時間才能執行完這個迴圈,中途還容易出現錯誤。

後來上網查詢相關資訊,來提升效率,終於找到一種可行性方法

採用mysql中的  insert into table(列名1,列名2,列名3 ...) values(值1,值2,值3,  ...) on publicate key update 列名1 = values(值1),列名2 = values(值2)...

講解下這條語句

首先使用這個方法必須滿足一個條件,就是你新要查詢插入的這16000條資料,與你現有的表資料格式都是一樣的,你本地資料表的主鍵完全與新的資料匹配

因為這個機制建立在資料表主鍵的基礎上,這是它判斷是否資料重複的重要依據。

然後講下update 後面的語句的意思,update後面跟著的列名1 = values(值1),列名2 = values(值2)作用是你想要對那些列的值要進行更新,就將其以這種

組合的方式標記出來例如,userid = values(3),uname = values('xueqi') 這樣子

寫一條我的語句作為參考:

insert into USER(ID,NAME,PASS,EMAIL,STATUS,SEX,AGE) values(1,'xueqi','123','[email protected]',0,1,29),(2,'xiaoli','4521','[email protected]

',0,1,23) on publicate key update

EMIAL = values(EMAIL),SEX = values(SEX),AGE = values(AGE)

相關推薦

提升mysql資料插入或者更新資料條目執行效率

我在做專案的時候有這麼個需求,我需要對每天產生的16000條資料進行批量的更新修改, 首先我們先在資料表裡面查詢新的資料條目是否已經在現有的表裡存在,如果存在就執行update方法,如果不存在就直接執行insert方法 我的做法就是 for(迴圈16000條資料){ Str

資料庫插入或者更新批量資料的效能優化

1、一條SQL語句插入多條資料2、在事務中進行插入處理。3、資料有序插入。而使用合併資料+事務+有序資料的方式在資料量達到千萬級以上表現依舊是良好,在資料量較大時,有序資料索引定位較為方便,不需要頻繁對磁碟進行讀寫操作,所以可以維持較高的效能。

mysql中避免資料寫入或者更新失敗

在進行簡單的資料庫寫入或者更新操作的時候,當資料過大的時候,有時候會出現寫入、更新失敗的問題。這個時候你會發現當你試著將char,varchar欄位修改為tex甚至longtext的時候依然報錯。 在這個時候你需要考慮下:max_allowed_packet

[資料庫] Navicat for MySQL換種思維解決插入同時更新資料

        這篇文章是我的學生在實際專案中遇到的一個案例,在對某張表插入資料過程中,某些特定的欄位需也要進行更新,比如說部門編號在前端插入,而部門名稱在插入時應該自動更新,如果前端設定選擇編號又選擇部門就重複功能了,那麼資料庫怎麼實現呢?        最早學生想通過觸發

MySQL資料庫 之 插入更新與刪除資料

一、插入資料 MySQL 中使用 insert 語句來向資料庫表中插入新的資料記錄。 ☆ 為表的所有欄位插入資料 insert into tb_name (col_list) values (value_list) 建立一個數據表 person

MySQL】面試官問我:MySQL如何實現無資料插入,有資料更新?我是這樣回答的!

## 寫在前面 > 馬上就是金九銀十的跳槽黃金期了,很多讀者都開始出去面試了。這不,又一名讀者出去面試被面試官問了一個MySQL的問題:向MySQL中插入資料,如何實現MySQL中沒有當前id標識的資料時插入資料,有當前id標識的資料時更新資料。其實,這題目一點也不難!! ## 先來個簡單題目 正

【SQL必知必會】資料插入更新

資料的插入insert into values 資料的插入有以下幾種方式: 插入完整的行; 插入行的一部分; 插入多行; 插入某些查詢的結果。  插入完整的行: INSERT INTO Customers VALUES ('Pep E. L

mybatis 註解的方式批量插入更新資料

轉載自:https://www.cnblogs.com/dakewang/p/8268744.html   一,當向資料表中插入一條資料時,一般先檢查該資料是否已經存在,如果存在更新,不存在則新增  使用關鍵字  ON DUPLICATE KEY UP

mysql和Mapper中批量更新資料寫法

mapper寫法: <update id="updateOrderStateByOrderId" parameterType="java.util.List"> update t_replace_order set Forder_state = <f

mysql儲存過程插入十萬條資料

用儲存過程建立一個類似這樣的表,從0到99999的五位數,不足五位數的補足 delimiter // #定義識別符號為雙斜槓 drop procedure if exists init; #如果

關於MongoDB中如何做到對已有資料插入更新欄位,不存在時則插入新的Document

背景需求: * 比如我們有這樣一個需求,有兩個excel中的資料,需要插入到資料庫中,這個兩個excel中的資料有些欄位都是一樣的,比如本例所寫的,電臺名稱是一樣的,省市縣也是一樣的,而不一樣的是

Oracle優化:大量資料插入更新

最近遇到的一個面試題,印象很深記錄如下: 面試官:現在有一張表資料量達很大,要把裡面記錄時間的那行更新到當前最新日期,每次更新都很卡,機器變慢影響業務,怎麼優化。 我的想法是:大量的資料更新肯定會寫記錄,而大量的寫記錄又會觸發lgwr,所以機器變卡的原因是記憶體暫滿還有

c#中往mysql裡批量插入上萬條資料

前面文章說採集了很多資料,要存入mysql資料庫。之所以選擇mysql資料庫,原因只不過是mysql很方便安裝應用範圍也廣,又小,也挺好用。呵呵 我仍然在csdn詢問,http://bbs.csdn.net/topics/390357952?page=1#post-3935

mysql 使用select插入多條資料,insert into (1,2,3,4,)select(1,2,3,4)

INSERT IGNORE mob_report.day_coupon_report ( mdate, id, day_release_coupon_count, day_writeoff_coupon_count, shop

merge into 插入更新資料

1.Oracle中Merge into能整合update和insert兩個語句 2.這個語法僅需要一次全表掃描就完成了全部工作,執行效率要高於INSERT+UPDATE 語法: MERGE [INTO

Sqlite:一個SQL搞定,記錄存在不插入或者替換資料

1.sqlite 如果記錄已經存在就不插入 假設你的表叫:yourtable,其有二個欄位:field1, field2(假設都是 int 型,field1 為主鍵) 如果不存在就插入,存在就忽略的方式,用 insert or ignore: INSERT OR IGNORE INTO yourt

Java在mysql資料庫中插入datatime時間資料

//將時間字串轉Timestamp型別 public static Timestamp string2Time(String dateString) throws ParseException {

Ajax實現定時從伺服器獲取資料,定時更新資料

一般來說,我們很容易想到用如下演算法來實現隔一段時間從伺服器取值:var secs = 300; //倒計時的秒數 function doUpdate(num) { if (num % 3 == 0) { saveUserInfo(); } }

一步一步學MySQL----7 插入更新、刪除資料

7.1 插入完整資料記錄 語法: insert into table_name(field1,field2,field3,……)values(value1,value2,value3,……); 例如: 我們先建立一張user表,如下: mysq

【PHP+MYSQL】批量插入時表中有相同資料的話則批量更新

應用場景 有時候我們向資料庫插入記錄時,有時會有這種需求,當符合某種條件的資料存在時,去修改它,不存在時,則新增資料的情況。 比如說系統配置則一塊,如有下表: CREATE TABLE `system_config` ( `id` int(11) unsigned NOT N