MySQL 更新行。需要更新大量唯一的行

标签 mysql

我在 mySQL 数据库上使用 PHP 脚本。我拥有的是为搜索页面提取的产品库存。我的工作正常,并且我的搜索页面工作完美。我唯一不知道的是如何更新数据库中每种产品的库存。我有一个新文件,需要与产品编号匹配,然后替换 mysql 数据库的一列中的数据。就像下面这样

mysql数据库:

产品编号......................产品库存

12345678........................................1

新文件:

12345678.................................5

基本上,我需要新文件与 mysql 上的产品编号相匹配,并用新编号替换产品库存。所有这些都在 PHP 中。

最佳答案

您没有说明该数据库中有多少行。通常个别更新非常慢。

你可以

  • 使用 LOAD DATA INFILE 将“新股票”文件加载到临时表中
  • 使用 JOIN 进行更新以设置产品表中的值

这将快几个数量级。

使用 mysql 上使用的语法进行更新:

UPDATE products p JOIN temp_products t ON (p.id=t.id) SET p.stock = t.stock;

请注意,您需要 LOAD DATA INFILE 的特殊权限。 您还可以使用 LOAD DATA INFILE LOCAL(查看文档)。

或者,您可以使用 PHP 解析文件,在临时表中生成包含多值的 INSERT,然后执行联接更新。这会比 LOAD DATA INFILE 慢一点,但比执行 27000 次查询要快得多。

关于MySQL 更新行。需要更新大量唯一的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6637109/

相关文章:

mysql - 一个子类别可以属于多个类别

php - 如何通过多个查询将多个表数据提取到一个数据表

Python pip 安装 mysql-connector-python 2.0.1 失败

php - 将数据库文本值输出到 div

mysql - go mysql 返回空值

python - Django mysqlclient 后端在 Windows 中产生 django.db.utils.OperationalError : (2059, <NULL>)

mysql2 gem 无法在 Windows 7 上安装 : failed to build gem native extension

php - 在 mysql 数据库中搜索结果包含部分匹配的字符串

php - 引用自身的 CakePHP 模型

mysql - 数据采集​​用什么数据库?