有一張表goods中有20w條資料,現在需要把某個欄位的值做md5加密後更新。
一條一條迴圈更新效能差不說,還容易造成資料庫阻塞。
<?php
set_time_limit(0
);ini_set
('memory_limit'
,'1g');
$mysqli
=new
mysqli
('127.0.0.1'
,'root'
,'root'
,'wx'
,3306);
if(mysqli_connect_errno()
)$mysqli
->
set_charset
('utf8');
//準備sql語句
$sql
="select faction from wx_goods where status = 1 "
;//執行sql語句
$query
=mysqli_query
($mysqli
,$sql);
$arr
=mysqli_fetch_all
($query
,mysqli_assoc);
$update_sql
='update wx_goods set faction = case id '
;$ids=[
];foreach
($arr
as$v
)$ids
=join
(','
,$ids);
$update_sql.=
' end where id in ('
.$ids
.')'
;$mysqli
->
query
($update_sql
);
MySql批量更新語句(UPDATE)
下面建立乙個名為 bhl tes 的資料庫,並建立名為 test user 的表,字段分別為 id age name create database ifnot exists bhl test 檢視結果 檢視結果 張三 18 男 趙四 17 女 劉五 16 男 周七 19 女 檢視結果 張三 whe...
批量插入,update
setting 1 create table t as select from all objects where 1 2 模擬逐行提交的情況,注意觀察執行時間 declare begin for cur in select from t ref loop insert into t values ...
mysql批量更新update操作,導致鎖表
sql如下 update pay trans set return state 1 where order id and user id 批量執行此條sql時,導致資料表被鎖,所有交易異常。經排查where條件order id and user id 沒有加索引,導致整個表被鎖。mysql的行鎖是通...