我有一個通過連接表Info連接到表的文章的主表只有少量條目的標記。我想分割文章表,通過刪除行或創建一個只有我想要的條目的新表,基於沒有鏈接到某個標記。有幾百萬篇文章。我怎樣才能做到這一點?基於連接分割表的SQL語句
並非所有的文章都有任何標籤,有些標籤有很多。
例子:
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上。
非常感謝您的幫助。我真的剛剛開始使用數據庫,並且您的反饋非常有幫助。對於匹配,您的插入語句運行得非常好,幾秒鐘內就完成了,而我之前的方法已經運行了幾個小時。 – 2010-03-20 19:45:46