快速可靠地将数据插入单独的表中

时间:2010-11-12 19:36:52

标签: mysql performance insert

假设我们从CSV文件中获取以下数据:

account_number balance customer name
100            500.00  GERN BLANSTON
101            800.00  GERN BLANSTON
102            200.00  OPRAH WINFREY

这代表两个属于Gern Blanston的帐户和一个属于Oprah Winfrey的帐户。现在假设我们有一个customer表和一个account表。我们可以假设只使用两个INSERT语句插入数据:

INSERT INTO customer
  (name)
VALUES
  ('GERN BLANSTON'),
  ('OPRAH WINFREY')

INSERT INTO account
  (account_number, balance, customer_id)
VALUES
  (100, 500.00, ???),
  (101, 800.00, ???),
  (102, 200.00, ???)

如果我们知道Gern Blanston和Oprah Winfrey的ID,我们当然可以在第二个INSERT语句中使用这些ID,它会正常工作。但无论如何,我们需要获得这些ID。

我的问题:有没有一种快速的方法可以找出或至少跟踪每个插入客户的ID?单独插入每一行然后获取LAST_INSERT_ID()对我来说太慢了(每个CSV文件中最多有65,000个帐户)。每次插入新帐户时查找客户ID也太慢了。

或者,如果您想回避这个特定问题并推荐一个不同的解决方案,我也会对此持开放态度。我正在使用MySQL。

1 个答案:

答案 0 :(得分:0)

在完成插入后添加另一列account列,其中存储customer_nameupdate account set customer_id=(select customer.customer_id from customer where customer.customer_name=account.customer_name;

希望这种替代方法可以简化复杂性

另外,将customer table更改为customer_id

的auto_increment