我寫了一個PHP web蜘蛛來從網站獲得新聞標題。
當我得到標題時,我會將它們插入到mysql中。
第一次真的有效。
但是,這些工作將每小時運行一次。
但後來,我不想插入重複的數據。
所以,我需要檢查每次當我插入到MySQL。
但我認爲這不是一個好辦法。
有什麼更好的想法?如何以更高效的方式比較mysql中的現有數據?
-8
A
回答
1
你可以做一些事情:
- 更改你的表是在標題領域獨樹一幟。它不會允許重複的條目。
- 在標題和日期字段中設置唯一的表格 - 這將允許重複,但不能在同一天 - 這將有助於您輸入同名的新聞報道(它們可能會出現在應該應該在那裏。
- 運行一些SQL先來看看數據是否已經存在,而且它是,不要將其插入。
1
你可以使用一個獨特的密鑰自動決定哪些文章應該被歸類爲重複
舉例如下:
CREATE TABLE IF NOT EXISTS news_items(
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
title VARCHAR(150) NOT NULL,
create_datetime DATETIME NOT NULL,
description VARCHAR(255) NOT NULL,
PRIMARY KEY (id),
UNIQUE INDEX UK_title_create_datetime (title, create_datetime)
)
ENGINE = INNODB;
此表在標題和create_datetime上具有唯一鍵。 以下插入語句將匹配該鍵上的項目,並忽略它們而不會拋出錯誤或插入重複項。
INSERT IGNORE INTO news_items (title, create_datetime, description) VALUES ('My News Item', '2012-08-30 11:35:00', 'Something newsworthy happened');
你可以使用太容易ON DUPLICATE KEY UPDATE
更新匹配行選定字段:
INSERT INTO news_items (title, create_datetime, description) VALUES ('My News Item', '2012-08-30 11:35:00', 'Something newsworthy happened')
ON DUPLICATE KEY UPDATE
description = VALUES(description);
看一看MySQL的INSERT文件和INSERT ON DUPLICATE KEY UPDATE
相關問題
- 1. 比較數據的高效方法
- 2. 更高效的數字比較
- 3. 有沒有比較兩個數據幀的有效方式
- 4. 高效的方式來比較新的數據與巨大的現有數據庫
- 5. 如何在cpp中以有效的方式比較向量與數組?
- 6. MySQL:高效的二進制值比較
- 7. 如何比較/更新兩個mySQL數據庫的模式
- 8. mysql更高效的查詢方式
- 9. 如何以最有效的方式更新數據庫?
- 10. 數學,高效的方式來比較日期
- 11. 比較float比double更高效嗎?
- 12. 如何有效比較我的數據與遠程數據庫?
- 13. php數組比較的有效方法
- 14. 更好的方式來比較Rails中的兩個數據集?
- 15. 高效的數據透視/數據比較
- 16. 新數據與大型數據庫記錄的高效比較
- 17. 用SELECT IN SELECT以更高效的方式查詢mysql
- 18. 如何比較2種不同的腳本以提高效率?
- 19. MySQL比較現有記錄
- 20. MySQL數據比較
- 21. 以elif方式比較熊貓數據框中的字符串
- 22. 在mySQL中比較數據
- 23. 更有效的方式來遍歷NSString的數組並進行比較
- 24. 有效的比較
- 25. 比XML和JSON更高帶寬效率的數據格式?
- 26. 如何以最有效的方式聚合數據整數?
- 27. 如何以更高效的方式編寫排序?
- 28. 如何以有效的方式覆蓋數據庫中的重複數據?
- 29. 最有效的方法來比較列表數據
- 30. 根據數字差異比較列表的最有效方法?
你還沒有嘗試過? –
你可以在mysql中使用[ON DUPLICATE KEY UPDATE](http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html)。 –