更快地连接包含大量行的列?

时间:2015-07-26 11:44:15

标签: mysql

我有两张桌子。

表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;

此查询已运行许多小时。

有没有更快的方法来做我想做的事情?

1 个答案:

答案 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