有這張表。插入的最快方法,如果不存在,則在MySQL中獲取ID
| id | domain |
id
是主鍵。 domain
是一個獨特的密鑰。
我想:
- 插入一個新的領域,如果不存在的話。
- 獲取該域的
id
。
我現在做這樣的:
然後PDO::lastInsertId()
得到id
。
但這很關鍵,所以我儘管我會問:我可以以更好的方式做到這一點嗎?
有這張表。插入的最快方法,如果不存在,則在MySQL中獲取ID
| id | domain |
id
是主鍵。 domain
是一個獨特的密鑰。
我想:
id
。我現在做這樣的:
然後PDO::lastInsertId()
得到id
。
但這很關鍵,所以我儘管我會問:我可以以更好的方式做到這一點嗎?
直到有人說不然,我說的是不,這是最好的方式。
此方法有一個副作用:「每次找到重複鍵時,自動遞增ID都會加1」。
當查詢以exemple.com作爲值第一次運行時 它創建條目。假設您再次重複該查詢13次。之後,你嘗試用xyz.com,你會驚訝地看到的那個,而不是自動遞增ID = 2你得到15
1 exemple.com
15 xyz.com
25 pqr.com
50 THG .com
請看這個問題http://stackoverflow.com/questions/548541/insert-ignore-vs-insert-on-duplicate-key-update – Znarkus 2013-10-15 16:01:08
重複鍵更新插入...的性能是主觀的。請閱讀:http://mikefenwick.com/blog/insert-into-database-or-return-id-of-duplicate-row-in-mysql/ – AlphaLeader 2013-10-17 05:09:07
「ol li code」的CSS似乎有點偏離? – Znarkus 2011-03-05 10:20:52
身份證是什麼?它只是作爲主鍵使用(即它對您的應用程序是不透明的嗎?) – 2011-03-05 10:24:12
是的。我使用它作爲請求日誌,並且認爲varchar對於包含大量行的表是可擴展的。 – Znarkus 2011-03-06 16:16:32