有这张表。插入的最快方法,如果不存在,则在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