我正在研究網頁索引機器人,並使用PHP和MySQL。其中一個表將用於存儲網頁列表。我希望該表有一個基於整數的id
列(以便我可以更快地將它加入到其他表中,以便其他表可以在不存儲完整url的情況下引用它),但是我也希望url
列能夠保持獨特。如何在MySQL中使用兩個唯一列來批量插入多行?
此問題出現的原因是,如果我的腳本讀取有250個鏈接的網頁,我不確定將它們添加到網頁表而不創建重複項的最佳方法。我可以循環查找我找到的250個鏈接,併爲它們中的每個查詢表以確保它們不存在,然後插入那些可以執行的操作 - 這將需要至少250個查詢。但是,如果我可以讓mysql強制url
成爲一個獨特的列,我可以簡單地做一個insert ignore
,聲明所有的鏈接。這將保持現有記錄在添加新記錄時被複制。如果我有這種類型的表是唯一/主要和自動遞增的整數id列,我是否也可以指定url列是唯一的?
id (auto inc) url added
----------------------------------------------------------------------
1 http://site.com/page-a/ 2010-01-01 01:23:34
2 http://site.com/page-b/ 2010-01-01 01:23:34
3 http://site.com/page-c/ 2010-01-01 01:23:34
已經穿過我的腦海中設置的URL是唯一的主鍵,然後手動遞增id
柱用PHP/MySQL的語句的另一個選項:
url (unique, primary) id added
-------------------------------------------------------------
http://site.com/page-a/ 1 2010-01-01 01:23:34
http://site.com/page-b/ 2 2010-01-01 01:23:34
http://site.com/page-c/ 3 2010-01-01 01:23:34
好像那會有允許mysql強制執行一個唯一的url列(從而允許我的insert ignore
方法),也允許我加入一個整數。唯一奇怪的是不得不依靠我的腳本來添加和增加id列,但是如果沒有更好的選項,我可能會願意這樣做。
我的選擇是什麼?