在没有任何键/索引信息的情况下更新大型MySQL表

用户名

我想我知道问题出在哪里,但我需要一些帮助,朝着正确的方向发展。

我有一个表“产品”,也有几个temp_product表,用于各种供应商。

这里的目标是从适当的temp_product表中更新产品表中的几个字段。我的产品供应商给了我一个包含所有库存数据的CSV文件。最初,我只是循环浏览CSV并逐行更新,但这花了很长时间,所以现在我使用LOAD DATA LOCAL INFILE将其加载到临时表中。

我遇到的问题是UPDATE查询要永远运行,而且大多数时候MySQL完全崩溃了。我希望可以向您展示我的表结构,并且有人可以帮助我确定哪种键/索引设置最有效?

我尝试了2种不同的更新查询变体,但没有一种起作用。

UPDATE product AS p, temp_product AS t
    SET p.quantity = t.quantity,
        p.ean = t.inventory,
        p.cost = t.price,
        p.date_modified = NOW()
    WHERE p.sku = t.sku

-和-

UPDATE temp_product AS t
    INNER JOIN product AS p ON p.sku = t.sku
    SET p.quantity = t.quantity,
        p.ean = t.inventory,
        p.cost = t.price,
        p.date_modified = NOW()

这是我所讨论的表的结构:

temp_product

sku varchar(15) PRI
status  varchar(2)
statusid    int(11)
quantity    int(11)
inventory   varchar(15)
ETA varchar(25)
ETA_Note    varchar(255)
price   double(10,2)

产品

product_id  int(11) PRI
model   varchar(64)
sku varchar(64)
upc varchar(50)
ean varchar(50)
mpn varchar(64)
location    varchar(128)
quantity    int(4)
price   decimal(15,4)
cost    decimal(15,4)
status  tinyint(1)
date_added  datetime
date_modified   datetime

我有一种感觉,如果我正确设置了键/索引,我可以使它正常工作。我现在唯一设置的是主键,但是这些键在所有表中都不匹配。我对所有这些都还很陌生,因此我们将不胜感激。

为了使事情变得更加复杂,我不确定某些供应商是否使用相同的SKU,因此我想更新产品表WHERE sku = sku和location ='suppliername'。

谢谢您的帮助!

编辑:减少了一点点的问题,最初有一个要更新的产品和Supplier_product表,一旦我使产品表工作,我可能可以从那里拿走它。

阿沙林德

首先,你可以运行SHOW CREATE TABLE product;SHOW CREATE TABLE temp_product;粘贴的结果?另外,您的产品表到底有多大?select count(1) from products可以提供帮助)

关于键:您至少需要skuproduct表中添加

如果sku应该是唯一字段,则可以使用以下命令进行操作:

ALTER TABLE product ADD UNIQUE KEY sku(sku);

如果sku不是唯一字段,那么您仍然可以像这样将其添加为键:

ALTER TABLE product ADD KEY sku(sku);

但是在这种情况下,这意味着对于skutemp_product表中包含特定记录的一条记录,您将更新表中的多个记录product

关于表的大小:即使表很大(例如几百万行),也可以运行耗时的查询(例如,如果您是唯一使用此数据库的人),则在添加表之后关键是,这两种变体原则上都应该可以工作,并且所花的时间比现在少。否则,最好分批进行更新(例如一次进行100、500或1000条记录),最好使用一些脚本,这些脚本甚至可能在更新之间稍等一会。如果您的数据库是复制到从属服务器的主数据库,则特别推荐这样做。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在没有任何键/索引信息的情况下更新大型MySQL表

来自分类Dev

我如何在没有任何联接的情况下优化大型MySQL表中的查询?

来自分类Dev

在没有 for 循环的情况下更改特定索引处的大型数组中的条目

来自分类Dev

PHP错误:没有任何html / cookie / space的情况下无法修改标头信息

来自分类Dev

如何在没有任何循环的情况下获取php中的特定键数组

来自分类Dev

MS Access Form:在没有键的情况下将新信息输入到两个链接表中

来自分类Dev

如何在没有Hibernate生成任何表的情况下使用Hibernate Envers(@Audited)

来自分类Dev

symfony2如何在没有任何令牌表的情况下记住我?

来自分类Dev

如何在没有任何关系的情况下从2个表联接数据?

来自分类Dev

使用C#在没有注册表的情况下禁用Ctrl或Alt键

来自分类Dev

如何在没有外键的情况下匹配休眠/ JPA表

来自分类Dev

Rails + Spreadsheet gem:如何在没有索引的情况下将行推入工作表?

来自分类Dev

Node.js在没有任何操作的情况下被mysql自动崩溃

来自分类Dev

在没有任何第三方库的情况下从MySQL触发Shell脚本

来自分类Dev

如何在没有任何换行符的情况下查找 MySQL 记录?

来自分类Dev

BIG O在没有足够信息的情况下

来自分类Dev

在没有任何DesktopEnvironment的情况下如何运行linux?

来自分类Dev

在没有任何许可信息,日期等的情况下,如何获取符号链接及其指向的文件?

来自分类Dev

我的应用程序在没有 log cat 异常或任何错误信息的情况下崩溃?

来自分类Dev

如何在没有主键的情况下按顺序更新表?

来自分类Dev

实体框架 - 如何在没有视图模型的情况下更新多个表

来自分类Dev

在没有索引的情况下遍历vars?

来自分类Dev

MySQL如何在没有公用键的情况下联接3个表

来自分类Dev

Java:在没有KeyListener或不使用任何其他自定义类的情况下捕获键事件

来自分类Dev

两个如何在没有任何索引的情况下合并两个数据帧

来自分类Dev

如何在没有日历表的情况下向MySQL查询添加天空白

来自分类Dev

在CakePHP中没有主键的情况下编辑MySQL DB表中的数据

来自分类Dev

在没有公用键的情况下联接多个表

来自分类Dev

在没有公用键的情况下联接多个表

Related 相关文章

  1. 1

    在没有任何键/索引信息的情况下更新大型MySQL表

  2. 2

    我如何在没有任何联接的情况下优化大型MySQL表中的查询?

  3. 3

    在没有 for 循环的情况下更改特定索引处的大型数组中的条目

  4. 4

    PHP错误:没有任何html / cookie / space的情况下无法修改标头信息

  5. 5

    如何在没有任何循环的情况下获取php中的特定键数组

  6. 6

    MS Access Form:在没有键的情况下将新信息输入到两个链接表中

  7. 7

    如何在没有Hibernate生成任何表的情况下使用Hibernate Envers(@Audited)

  8. 8

    symfony2如何在没有任何令牌表的情况下记住我?

  9. 9

    如何在没有任何关系的情况下从2个表联接数据?

  10. 10

    使用C#在没有注册表的情况下禁用Ctrl或Alt键

  11. 11

    如何在没有外键的情况下匹配休眠/ JPA表

  12. 12

    Rails + Spreadsheet gem:如何在没有索引的情况下将行推入工作表?

  13. 13

    Node.js在没有任何操作的情况下被mysql自动崩溃

  14. 14

    在没有任何第三方库的情况下从MySQL触发Shell脚本

  15. 15

    如何在没有任何换行符的情况下查找 MySQL 记录?

  16. 16

    BIG O在没有足够信息的情况下

  17. 17

    在没有任何DesktopEnvironment的情况下如何运行linux?

  18. 18

    在没有任何许可信息,日期等的情况下,如何获取符号链接及其指向的文件?

  19. 19

    我的应用程序在没有 log cat 异常或任何错误信息的情况下崩溃?

  20. 20

    如何在没有主键的情况下按顺序更新表?

  21. 21

    实体框架 - 如何在没有视图模型的情况下更新多个表

  22. 22

    在没有索引的情况下遍历vars?

  23. 23

    MySQL如何在没有公用键的情况下联接3个表

  24. 24

    Java:在没有KeyListener或不使用任何其他自定义类的情况下捕获键事件

  25. 25

    两个如何在没有任何索引的情况下合并两个数据帧

  26. 26

    如何在没有日历表的情况下向MySQL查询添加天空白

  27. 27

    在CakePHP中没有主键的情况下编辑MySQL DB表中的数据

  28. 28

    在没有公用键的情况下联接多个表

  29. 29

    在没有公用键的情况下联接多个表

热门标签

归档