Mal*_*bur 2 mysql performance sql-update
当谈到 sql 查询时,我有点菜鸟,而且我只真正使用过基本的 SELECT、UPDATE、DELETE 语句。现在我需要更新一个垂直表中的很多行(50+),并且我正在运行这样的语句:
UPDATE `postmeta` SET meta_value = 'John' WHERE `meta_key` = 'name' AND `post_id` = 29230;
UPDATE `postmeta` SET meta_value = 'Johnson' WHERE `meta_key` = 'last_name' AND `post_id` = 29230;
UPDATE `postmeta` SET meta_value = 'www.johnsonsdiner.com' WHERE `meta_key` = 'url' AND `post_id` = 29230;
UPDATE `postmeta` SET meta_value = 'john@johnson.com' WHERE `meta_key` = 'mail' AND `post_id` = 29230;
UPDATE `postmeta` SET meta_value = '12341234' WHERE `meta_key` = 'phone' AND `post_id` = 29230;
... + 45 more
Run Code Online (Sandbox Code Playgroud)
注意 post_id 是相同的,而 meta_key 不同。
有没有更好的方法来运行所有这些更新,这会为 mySQL 带来更好的性能?为每个语句添加一个 LIMIT 1 会有所不同吗?
任何帮助表示赞赏
您只能使用一个update带有非case共同条件的语句,也可以将共同条件带到 where 子句中:
UPDATE `postmeta`
SET meta_value = case
when `meta_key` = 'name' then 'John'
when `meta_key` = 'last_name' then 'Johnson'
when `meta_key` = 'url' then 'www.johnsonsdiner.com'
when `meta_key` = 'mail' then 'john@johnson.com'
when `meta_key` = 'phone' then '12341234'
.
...45 more
.
end
where `post_id` = 29230;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1173 次 |
| 最近记录: |