我有两张桌子。
表1:table_of_articles_with_tags
doc_id tag
100 apples
100 apples
200 bananas
400 pears
此表有249,934行。
表2:table_of_tags
tag_id tag
1 apples
2 bananas
3 oranges
4 pears
此表有34,886行。
我想创建第三个表格:
tag_id doc_id
1 100
1 100
2 200
4 400
基本上,我想用相应的ID号替换标签名称。
目前,我已向table_of_articles_with_tags添加了tag_id列,并且我正在运行此查询:
UPDATE table_of_articles_with_tags t1
INNER JOIN table_of_tags t2
ON t1.tag = t2.tag
SET t1.tag_id = t2.id;
此查询已运行许多小时。
有没有更快的方法来做我想做的事情?
答案 0 :(得分:0)
您可以尝试在table_of_tags.tag上添加和索引:
ALTER TABLE table_of_tags ADD INDEX idx_tag (tag);
如果还不够,你可以在table_of_articles_with_tags.tag上做同样的事情。
您的查询将更新现有表,如果您要创建新表,则应使用此查询:
CREATE TABLE third_table AS
SELECT
t2.tag_id,
t1.doc_id
FROM
table_of_articles_with_tags t1 INNER JOIN table_of_tags t2
ON t1.tag = t2.tag