1. 程式人生 > >提高MySql批量更新的效率

提高MySql批量更新的效率

本人近期在mysql中進行表資料的批量更新時,遇到了一個比較討厭的問題——資料更新的速度太慢。如何提高資料更新的速率?

寫在前面

上一篇博文提到了MySql中用一張表的資料更新另一張表的部分資料,(文章地址),隨之碰到了一個問題,就是資料更新的速度太過緩慢。百萬條資料,用了57分鐘。問了許多人,也感謝某網友的回覆。得到了解決方案。

解決方案

建立索引, 在將要進行資料更新的兩個表中分別建立索引,然後跑了一遍:

UPDATE  B,C
SET B.forward_count=C.forward_count
WHERE C.uid=B.uid

發現速度得到了驚人的提升(2秒不到就跑完了),效率提高了1700多倍。感嘆自己前幾天苦苦的傻等,哎。因此記錄下此方法,紀念那些犯傻的日子。同時希望大家不要走這樣的彎路。

相關推薦

提高MySql批量更新效率

本人近期在mysql中進行表資料的批量更新時,遇到了一個比較討厭的問題——資料更新的速度太慢。如何提高資料更新的速率? 寫在前面 上一篇博文提到了MySql中用一張表的資料更新另一張表的部分資料,(文章地址),隨之碰到了一個問題,就是資料更新的速度太過緩慢。

mysql 批量更新語句

sql enum line new when title class 批量更新 語句 UPDATE `表名` SET `字段` = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHE

MySql 批量更新語法

舉例 rom info round ber ner from sql數據庫 yam mysql數據庫在批量更新某表的字段時,語法如下: UPDATE A AS aINNER JOIN ( SELECT * FROMA WHERE....) AS b ON a.order

mysql 批量更新數據庫主鍵為int,bigint 類型,字段為自增類型

span pre and style cat pri odi rem script select table_name, concat(‘alter table `‘,table_name,‘` MODIFY ‘, column_name, ‘ ‘, da

Mysql批量更新的一個坑-&allowMultiQueries=true允許批量更新

做了 沒有 前言 更新 配置 ont where 原來 mysq 前言 利用Mybatis批量更新或者批量插入,實際上即使Mybatis完美支持你的sql,你也得看看你操作的數據庫是否完全支持,而同事,最近就遇到這樣的一個坑! 問題

mysql 批量更新批量更新多條記錄的不同值實現方法

批量更新 mysql更新語句很簡單,更新一條資料的某個欄位,一般這樣寫: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';   如果更新同一欄位為同一個值,mysql也很簡單,修改

5.03-mysql批量更新資料的異常

來回測了幾次,複製sql到資料庫執行也沒錯。 導致的原因是:配置資料庫連線時url沒有配置allowMultiQueries=true屬性。 allowMultiQueries:允許多查詢. jdbc:mysql://localhost:3306/database?characte

MySQL批量更新死鎖案例分析

表結構如下: CREATE TABLE `user_item` ( `id` BIGINT(20) NOT NULL, `user_id` BIGINT(20) NOT NULL, `item_id` BIGINT(20) NOT NULL,

mysql 批量更新出錯

### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that correspo

mysql 批量更新子查詢

報錯的sql : UPDATE pro_t_info as p SET Pro_Code = concat(Pro_Code,Pro_ID) WHERE Pro_ID in(  select Pro_ID from pro_t_info where  channel_sou

mysql批量更新

UPDATE tableName SET time= CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHE

mysql 批量更新 update foreach

第一種方式 <update id="updateThreadreturnList" parameterType="java.util.List"> update

php mysql 批量更新資料

使用原生 sql 批量更新使用者積分資料訂單列表中查出 $list,包含  buy_id , total_money 欄位                   $list = [ 0 => ['buyer_id' => 1,'

MySQL批量插入效率優化手記

在用C++寫一段mysql入庫程式碼時,用的connector/c++,使用了PreparedStatement方式單條insert,然後整個插入操作放在事務中,大致如下: begintrans PreparedStatement for(要插入的資料集) { se

Mysql批量更新及插入(引數為Map)

前言         這個問題困擾了整整一天。          當遇到多條記錄需要插入或者更新的時候,往往會使用批量操作來提高效率,提高效能。然而在使用過程中確是出現了各種問題,真的是有些坑只有趟過

mysql批量更新表名的字首

一個一個修改表名是一件麻煩事,尤其是在表很多的情況下。那麼有簡單方式嗎? SELECT CONCAT( 'ALTER TABLE ', table_name, ' RENAME TO m

mysql批量更新多條記錄的同一欄位為不同值

mysql更新資料的某個欄位,一般這樣寫: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value'; 也可以這樣用in指定要更新的記錄: UPDATE mytab

mysql 批量更新多條記錄

UPDATE mytable SET myfield = CASE id WHEN 1 THEN ‘value’ WHEN 2 THEN

mysql批量更新-註釋

批量更新1.mysql更新語句很簡單,更新一條資料的某個欄位,一般這樣寫:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';2.如果更新同一欄位為同一個值,mysql也很簡單,修改下w

Mysql批量更新的一個坑-&allowMultiQueries=true允許批量更新

前言         實際上,我們經常會遇到這樣的需求,那就是利用Mybatis批量更新或者批量插入,但是,實際上即使Mybatis完美支援你的sql,你也得看看你說操作的資料庫是否支援,而阿福,最近就遇到這樣的一個坑。 問題         先帶