我正在尝试从另一个表中更新100000多行数据,但是需要太长时间才能超过120分钟才能使这个过程更快
我在做什么
我有两张桌子
+-----------------+ +-----------------------------+
| tags | | items |
+-----------------+ +-----------------------------+
|id | unq | name | |id | tag_id | unq | detail |
+-----------------+ +-----------------------------+
| 1 | n1 | Name1 | | 1 | | n2 | detail2 |
| 2 | n2 | Name2 | | 2 | | n1 | detail1 |
| 3 | n3 | Name3 | | 3 | | n3 | detail3 |
| 4 | n4 | Name4 | | 4 | | n8 | detail8 |
| 5 | n5 | Name5 | | 5 | | n4 | detail4 |
| 6 | n6 | Name6 | | 6 | | n5 | detail5 |
| 7 | n7 | Name7 | | 7 | | n9 | detail9 |
| 8 | n8 | Name8 | | 8 | | n6 | detail6 |
|...| ... | ... | |...| | ... | ... |
+-----------------+ +-----------------------------+
我必须代表tag_id
列
unq
我使用的这些查询
Query 1.
UPDATE `items`
INNER JOIN tags ON (tags.unq = items.unq)
SET items.tag_id = tags.id
-- -------------- and ---------------------
Query 2.
UPDATE `items` SET `tag_id`= (SELECT tags.id FROM tags WHERE tags.unq = items.unq Limit 1
我使用的两个查询都花费了太多时间
想要输出
+-----------------------------+
| items |
+-----------------------------+
|id | tag_id | unq | detail |
+-----------------------------+
| 1 | 2 | n2 | detail2 |
| 2 | 1 | n1 | detail1 |
| 3 | 3 | n3 | detail3 |
| 4 | 8 | n8 | detail8 |
| 5 | 4 | n4 | detail4 |
| 6 | 5 | n5 | detail5 |
| 7 | 9 | n9 | detail9 |
| 8 | 6 | n6 | detail6 |
|...| ... | ... | ... |
+-----------------------------+
答案 0 :(得分:0)
您可以在单笔交易中执行以下操作:
1。
RENAME items to items_old
CREATE TABLE items_temp AS
SELECT items.id as 'id', tags.id as 'tag_id',
items.unq as 'unq', items.detail as 'detail'
FROM tags INNER JOIN items ON tags.unq = items.unq
如果您需要, 你可以添加autoinc字段
ALTER TABLE items MODIFY COLUMN id INT auto_increment
RENAME items_temp to items
DELETE items_old
答案 1 :(得分:0)
Serial.println(String(combinedArray)
语句以非常高的速度将文本文件中的行读取到表中。
您可以LOAD DATA INFILE
数据并将其写入文件,然后通过此方法将数据加载到另一个表中。
有关更多信息,请检查Documentation。