中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MYSQL Replace into和Insert into duplicate key update的對比分析

發布時間:2021-10-25 10:40:02 來源:億速云 閱讀:376 作者:柒染 欄目:大數據

本篇文章為大家展示了MYSQL Replace into和Insert into  duplicate key update的對比分析 ,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

有些同學對MYSQL中兩個看似相同功能的語句,在使用中感到疑惑,到底是功能重復還是各有各自的特點,我們需要弄清楚,并在合適的場合對他們加以利用。

我們通過幾個操作來詳細了解一下他們的使用方式和異同點

情況一, 判斷當前ID 是否存在 ID = 1 的記錄,如果有就更新數據,如果沒有則插入記錄

MYSQL Replace into和Insert into  duplicate key update的對比分析

這里如果我們單純使用UPDATE 語句,則會比較麻煩,首先我們需要判斷是否有 ID =1 的記錄,并且根據判斷后的結果進行下一步的操作。

使用 replace  功能就可以滿足上面的要求

MYSQL Replace into和Insert into  duplicate key update的對比分析

數據已經被直接更改了,其實說準確一點,不是更新而是兩個操作,細心的同學應該已經發現了上面圖中的是  2 rows affected ,本來是一條數據,怎么蹦出來兩條了。(注意2 rows affected)

MYSQL Replace into和Insert into  duplicate key update的對比分析

Replace into 語句主要是通過主鍵和唯一索引來判斷數據的重復性,繼而 1 先刪除數據,2 在插入數據的套路,實際是一條語句,完成了判斷,刪除,插入的操作,這樣的設計可以免除某些程序對表中數據處理的特殊需求。

可能熟悉MYSQL 的同學馬上又會問到,不是還有INSERT  DUPLICATE KEY 的語句嗎,他和 replace into 語句又有什么不同?

需求2 , 現在需要在test 表中插入數據,如果不重復就批量插入數據,如果重復,就更新其中某個值

MYSQL Replace into和Insert into  duplicate key update的對比分析

很明顯,操作后重復的數據被更新,而沒有重復的數據被插入,那他同學所問的異同點在哪里?

1  replace into 是否可以批量插入數據,insert duplicate key 都是可以的,

2  repace into 和 insert duplicate key 都可以更新數據

3  replace into 后面不可以接 select 語句   不可以, insert into  duplicate key  是可以接入select 語句的  ,這在兩條語句在適用的環境上有了明顯的分割。

4  對數據庫表的操作不同,一個是 delete , insert ,一個僅僅是 insert  update ,這在數據庫的物理操作層面也是根本的不同

最關鍵的一點不同是是對自增鍵的處理上,如果我們不指定自增主鍵的數據,(這里假設我們使用的是通過唯一索引進行判斷,而不是自增主鍵),那結果就大大的不同了,replace into 會刪除重復的行,在插入一行新的,而 insert into  duplicate key 則是不會改變原有的自增主鍵,而是直接UPDATE,這在基于自增主鍵在應用中使用時有根本性的不同,(ORACLE 的親們可能不大理解這個事情,因為ORACLE 本身在設計之初就沒有自增主鍵,底層數據存儲設計不同,造成ORACLE 理解 SQL SERVER  MYSQL 某些數據表設計和處理上困難,同理SQL SERVER  MYSQL 要理解 ORACLE 在某些數據表設計也有障礙),言歸正傳MYSQL 的程序員在使用這兩條語句我總結了相關使用的場景。

1  少數據量非大批量數據的更新,并且整行數據都要變化的情況下,可以采用REPLACE INTO ,并且如果主鍵和應用有緊密聯系,需要指定主鍵值,否則原數據行主鍵消失,這在某些與應用中是有用的,因為就是不要原有的主鍵,要一條新的ID包含新的值

2 大批量數據更新和插入,兩張或多張表,合并插入到一張表,并且去重,或者更新某個字段的VALUE 需要使用 INSERT INTO duplicate key update 語句

如果同樣大數據量的情況下,insert into  duplicate key update 語句的性能要比 replace into 性能要好,兩次操作和 一次操作對操作性能的影響也是不言而喻。

注:測試中,5.X 中在 insert into duplicate key update 中關于自增主鍵的某些小問題,貌似在8.0上已經消失了,具體還的在測試。看來8.0 的確是值得期待和擁有的。

上述內容就是MYSQL Replace into和Insert into  duplicate key update的對比分析 ,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

太仆寺旗| 辽宁省| 桦甸市| 银川市| 唐山市| 昌江| 天台县| 博湖县| 禹州市| 塔城市| 徐汇区| 青神县| 剑阁县| 册亨县| 上林县| 从化市| 澄江县| 济宁市| 中宁县| 西充县| 北宁市| 五常市| 雅江县| 广饶县| 昔阳县| 河池市| 孟津县| 维西| 平阴县| 克拉玛依市| 安义县| 景宁| 康平县| 鄢陵县| 贡山| 基隆市| 新干县| 蓝山县| 金川县| 澄城县| 四平市|