首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PDO更新Mysql中多个值的最有效方法

问使用PDO更新Mysql中多个值的最有效方法
EN

Stack Overflow用户
提问于 2012-09-04 09:12:13
回答 1查看 958关注 0票数 1

给定这种类型的用户表结构,您可以在一个表中存储许多用户值(如电话号码、首选项、联系信息):

代码语言:javascript
复制
Table: User ID | Key | Value

$values = [
    1 => 'A value for key 1',
    2 => 'Hello',
    8 => 'Meow',
]

// Update values
$stmt = $pdo_db->prepare('
    INSERT INTO table (UID, KEY, VALUE)
    VALUES            (:UID, :KEY, :VALUE)
    ON DUPLICATE KEY UPDATE VALUE = :VALUE');

foreach ($values as $key => $value) {
    $stmt->bindParam(':KEY', $key);
    $stmt->bindParam(':VALUE', $value);
    $stmt->execute();
}

如果您有150个不同的对,那么每次更新就有150个查询。我该如何优化这段代码?制作一个巨大的SQL会让mysql端的工作变得更容易吗?我应该考虑改变结构本身吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-04 09:14:48

以这个查询为指南-

代码语言:javascript
复制
INSERT INTO example
  (example_id, name, value, other_value)
VALUES
  (100, 'Name 1', 'Value 1', 'Other 1'),
  (101, 'Name 2', 'Value 2', 'Other 2'),
  (102, 'Name 3', 'Value 3', 'Other 3'),
  (103, 'Name 4', 'Value 4', 'Other 4');

允许您一次插入多条记录。

如果你知道哪些记录是新的,它可以加速将这些记录分离到一个普通的INSERT中-否则mysql必须花费额外的时间来协调ON DUPLICATE... UPDATE。

如果你只是在更新,也可以考虑使用UPDATE或REPLACE。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12255654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档