学习笔记--mysql索引(一) 索引使用,index,key,primary key, unique

所有MySQL列类型都可以被索引,对相关列使用索引是ᨀ高SELECT操作性能的最佳途
径。根据存储引擎可以定义每个表的最大索引数和最大索引长度,MyISAM和InnoDB 存储引擎的表默认创建的都是BTREE索引,支持前缀索引,即对索引字段的前N个字符创建索引。MyISAM存储引擎支持FULLTEXT索引,并且只限于CHAR、VARCHAR和TEXT列,默认情况下,MEMORY存储引擎使用HASH索引,但也支持BTREE索引。

创建索引有3种方式,第一种是建表的时候确定,比如:
CREATE TABLE lx_test.address (
address_id smallint(5) unsigned NOT NULL AUTO_INCREMENT,
address varchar(50) NOT NULL,
address2 varchar(50) DEFAULT NULL,
district varchar(20) NOT NULL,
city_id smallint(5) unsigned NOT NULL,
postal_code varchar(10) DEFAULT NULL,
phone varchar(20) NOT NULL,
last_update timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (address_id),
KEY idx_city_id (city_id),
UNIQUE idx_postal_code (postal_code),
INDEX idx_phone (phone)
) ENGINE=InnoDB AUTO_INCREMENT=606 DEFAULT CHARSET=utf8

这里用了4个关键字index,key,primary key, unique,看看分别什么效果,首先是primary key:
这里写图片描述
可看到这里的primary key自动建立了一个名字为PRIMARY的索引,由于表引擎是InnoDB,所以索引类型为B树索引,并且增加了唯一性约束。

那么UNIQUE关键字就是创建了增加了唯一性约束的索引,KEY关键字和INDEX关键字在建表时使用则是一个效果。可见,index, key, primary key, unique,都表示索引,只是primary key表示主键索引(固定索引名,unique, 主键唯一性约束),unique表示增加了unique的索引,而index和key的语义相同。

除了在建表时创建索引外,还可以通过修改表语法来创建索引:
ALTER TABLE lx_test.address ADD KEY idx_address2 (address2);
语法和创建表时一样。

还有一种写法:
create INDEX idx_district on lx_test.address (district);
不过这种写法不支持unique和key关键字。

删除索引,使用drop关键字即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值