(1)使用ALTER TABLE语句建立索引。
语法以下:
alter table table_name add index index_name (column_list) ; #普通索引
alter table table_name add unique (column_list) ; #惟一索引
alter table table_name add primary key (column_list) ; #主键索引 数据库
(2)使用ALTER TABLE语句删除索引。并发
语法以下:
alter table table_name drop index index_name ;网站
至于全文索引不是很经常使用,这里就很少作介绍。ui
例子:demo表以下code
ALTER TABLE demo ADD UNIQUE u_quee(area_id) 给demo表的area_id字段增长惟一索引blog
ALTER TABLE demo add UNIQUE ui_name(rank,area_id) 给demo表的area_id 和rank 字段都增长惟一索引索引
ALTER TABLE demo drop index u_quee 删除demo表的惟一索引table
其中惟一索引在电商买卖中库存防止超卖常常使用。电商
insert into buy_record... if(惟一索引报错? (插入数据库报错)){ 抛异常,已经秒过了,回滚.. }
固然还能够加锁实现(小型网站):class
UPDATE FROM goods SET num = num - 1 WHERE goodsid = 2 AND num > 0
这条语句仅仅只是加多了个 WHERE 条件 num > 0 可是其足以应付通常的应用的并发状况
例如:
当前库存 num 为 1
且有两个用户同时发起下单请求
那么这时候 稍微慢的那个用户就会遇到 num = 0 的状况 因此where条件不成立 插入失败 结果就是只有一我的下单成功。
固然还有更多状况可以使用乐观锁解决 例如取不重复数据时 可多添加几个where 字段 取完即更新它 那么下次就不会有其余用户取到