在mysql中unique唯一索引的作用_mysql唯一索引和unique

最近遇到一个问题:高并发环境下,如何避免一张表里的某些列不要重复。

我这样回答的(被“高并发”给骗了,傻傻地往复杂里想):

1. 查找和插入这两个操作做成一个事务,对整张表加锁。。。是不是很low的想法?

2. 那就允许临时的不一致性,不管三七二十一,随便插,在查询、修改、删除的时候将多余的行删掉就好了,即保证最终一致性即可。。。好像效率高了一点,但是好麻烦啊。。。

面试官跟我说,知不知道“唯一索引”,突然间就蒙了(⊙o⊙)…

其实就是unique啦,这也从侧面表现出自己这方面的基础不够扎实,居然没有第一时间想到最简单的做法,sql标准本身就是支持这样一个需求的!

具体怎么做呢?

可以在声明表的时候就加入这样一个约束(下面是mysql的语法):

create table Test ( id INT NOT NULL, name VARCHAR(30) unique, phoneNumber VARCHAR(20), password VARCHAR(32), primary key(id), unique key pn (phoneNumber) );

也可以在建表后增加或删除索引:

CREATE UNIQUE INDEX pw on Test(password);

ALTER TABLE Test DROP INDEX pn;

试一下

首先建表:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值