提高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,你也得看看你說操作的資料庫是否支援,而阿福,最近就遇到這樣的一個坑。 問題 先帶