資料庫錶快速更新__資料庫

來源:互聯網
上載者:User
一,背景。 1,線上上版本開發的時候,會經常遇到一些對原來的表欄位進行拆分,將表格的欄位複製到另一個表。主要介紹幾種資料庫欄位更新的方式。 二, 更新方式。 1,使用java代碼進行更新,不過會經常需要讀取資料庫,更新資料的值。適合處理很複雜的邏輯,但是更新時間會長點,有可能影響到線上的服務。 2,使用mysql語句進行更新,其實基本上都可以解決資料庫更新的問題。處理的速度也會快很多。 三,mysql資料庫更新方式。 1,大表間的資料更新。對於從一張幾百萬的表中擷取兩個欄位的資料,並且又匹配相應的內容存到另一張表中。直接的從這張表中擷取兩個欄位資料並且更新是會比較久的,而且會造成鎖表的情況, 在伺服器不能停機更新的時候,這個就會比較麻煩,所以比較好的方式。是一張表中的需要的幾個欄位都select出來,並且存入到另一張表中,並且對其建立相應的索引。再匹配待更新表的欄位,這樣既不會影響到線上的功能運轉,也可以很快地實現。
其中的原理是取出自己想要的資料,而不是全部的資料,並且將相應的資料建立好索引,加快查詢速度。 四,重複資料的尋找及刪除。 1,尋找重複的資料時,並且重複記錄是一個欄位的時候。用得比較多的就是select * from user where is_deleted = 0 group by phone having count(*) > 1 這種的方式。 2,但是如果是尋找重複記錄中(多個欄位),就需要換一種方式。

select * from user a
where (a.peopleId,a.seq) in (select peopleId,seq from user group by peopleId,seq having count(*) > 1)
* 3,重複資料刪除記錄中重複記錄。並且只留有最小的id。
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.