Самый быстрый способ вставить, если не существует, то получить идентификатор в MySQL - PullRequest
6 голосов
/ 05 марта 2011

Вот эта таблица.

| 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.

Ноочень важно, чтобы это было так быстро, как могло бы, поэтому я подумал: Могу ли я сделать это лучше?

Ответы [ 2 ]

1 голос
/ 15 октября 2013

Этот метод имеет побочный эффект: «Идентификатор автоматического приращения увеличивается на единицу каждый раз, когда обнаруживается повторяющийся ключ».
Когда запрос запускается в качестве значения в качестве значения instancele.com, он впервые создает запись.Допустим, вы повторили этот запрос еще 13 раз.После того, как вы попробуете с xyz.com, вы будете удивлены, увидев, что вместо автоматического увеличения id = 2 вы получите 15.

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

1 голос
/ 01 июня 2011

Пока кто-то не скажет иначе, я говорю Нет, это лучший способ .

...