6

有这张桌子。

| id | domain |

id是主键。domain是唯一键。

我想要:

  1. 插入一个新域,如果它尚不存在。
  2. 获取该id域的。

现在我这样做:

INSERT INTO domains
SET domain = 'exemple.com'
ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id)

然后PDO::lastInsertId()得到id.

但关键是要尽可能快,所以我想问:我能以更好的方式做到这一点吗?

4

2 回答 2

1

除非有人另有说法,否则我会说不,这是最好的方法

于 2011-06-01T06:49:05.897 回答
1

此方法有一个副作用:“每次找到重复键时,自动增量 id 都会增加 1”。
当查询以 example.com 作为第一次创建条目时的值运行时。假设您再重复该查询 13 次。之后,您尝试使用 xyz.com,您会惊讶地发现,不是自动递增 id=2,而是 15。

1 example.com
15 xyz.com
25 pqr.com
50 thg.com

于 2013-10-15T14:21:33.257 回答