У меня есть таблица:
table user(
id_user,
userName,
email,
primary key(id_user)
);
Я добавил уникальный индекс:
alter table user add unique index(userName, email);
Теперь у меня есть два индекса в таблице:
Index:
Keyname Unique Field
PRIMARY Yes id_user
userName Yes userName, email
Задача состоит в том, чтобы найти оператор MySQL для самого быстрого способа вставить новую уникальную запись.
Оператор должен возвращать Id_user
новой или существующей записи.
Я рассматриваю эти 2 варианта, и не знаю, какой из них лучше, или есть какой-то третий лучший способ сделать это?:
1
INSERT INTO `user` (`userName`, `email`)
VALUES (u1,'u1@email.me' )
ON DUPLICATE KEY Ignore
В: Где в этом утверждении должно быть указано, что для уникальных вставок необходим KEY: Keyname = uesrName?
2
IF EXISTS(SELECT `userName`, `email` FROM user WHERE `userName` = u1 AND `email` = u1@email.me)
BEGIN
END
ELSE
BEGIN
INSERT INTO user(`userName`, `email`)
VALUES (u1, u1@email.me);
END IF;
В: В этом утверждении - как следует учитывать индекс с Keyname = userName?
Спасибо!