2011-03-05 57 views
6

有這張表。插入的最快方法,如果不存在,則在MySQL中獲取ID

| id | domain | 

id是主鍵。 domain是一個獨特的密鑰。

我想:

  1. 插入一個新的領域,如果不存在的話。
  2. 獲取該域的id

我現在做這樣的:

然後PDO::lastInsertId()得到id

但這很關鍵,所以我儘管我會問:我可以以更好的方式做到這一點嗎?

+0

「ol li code」的CSS似乎有點偏離? – Znarkus 2011-03-05 10:20:52

+0

身份證是什麼?它只是作爲主鍵使用(即它對您的應用程序是不透明的嗎?) – 2011-03-05 10:24:12

+0

是的。我使用它作爲請求日誌,並且認爲varchar對於包含大量行的表是可擴展的。 – Znarkus 2011-03-06 16:16:32

回答

1

直到有人說不然,我說的是不,這是最好的方式

0

此方法有一個副作用:「每次找到重複鍵時,自動遞增ID都會加1」。
當查詢以exemple.com作爲值第一次運行時 它創建條目。假設您再次重複該查詢13次。之後,你嘗試用xyz.com,你會驚訝地看到的那個,而不是自動遞增ID = 2你得到15

1 exemple.com
15 xyz.com
25 pqr.com
50 THG .com

+0

請看這個問題http://stackoverflow.com/questions/548541/insert-ignore-vs-insert-on-duplicate-key-update – Znarkus 2013-10-15 16:01:08

+0

重複鍵更新插入...的性能是主觀的。請閱讀:http://mikefenwick.com/blog/insert-into-database-or-return-id-of-duplicate-row-in-mysql/ – AlphaLeader 2013-10-17 05:09:07

相關問題