【发布时间】:2011-12-03 21:53:33
【问题描述】:
我有一张桌子:
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 语句以最快的方式插入新的 unique 记录。
语句应返回新记录或现有记录的Id_user。
我正在考虑这两个选项,但不知道哪个更好,或者有没有第三种更好的方法来做到这一点?:
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 的索引?
谢谢!
【问题讨论】:
标签: mysql insert indexing unique