【发布时间】:2010-03-20 18:02:57
【问题描述】:
我有一个文章主表,它通过连接表 Info 链接到只有少量条目的表 Tags。我想拆分 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 上。
【问题讨论】:
标签: sql postgresql join sql-insert sql-delete