我有一个文章的主表,它通过连接表信息链接到只有少量条目的表标签。我想拆分 Articles 表,方法是删除行或创建一个仅包含我想要的条目的新表,基于缺少指向某个标签的链接。有几百万篇文章。我怎样才能做到这一点?
并不是所有的文章都有任何标签,有些文章有很多标签。
例子:
table Articles
primary_key id
table Info
foreign_key article_id
foreign_key tag_id
table Tags
primary_key id
对我来说,一开始就很容易分离出匹配的文章,所以我想也许我可以这样做,然后使用 NOT IN 语句,但运行速度太慢,不清楚它是否会完成。我用这些命令做到了:
INSERT INTO matched_articles SELECT * FROM articles a LEFT JOIN info i ON a.id = i.article_id WHERE i.tag_id = 5;
INSERT INTO unmatched_articles SELECT * FROM articles a WHERE a.id NOT IN (SELECT m.id FROM matched_articles m);
如果它有所作为,我在 Postgres 上。