关于mysql数据库索引
key 是数据库的物理结构,处于模型层面的,它包含两层意义和作用,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的)。包括primary key, unique key, foreign key 等。
index是数据库的物理结构,处于实现层面的,它只是辅助查询的,它创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储。
索引只是索引,它不会去约束索引的字段的行为(那是key要做的事情)。
Mysql常见索引有:主键索引、唯一索引、普通索引、全文索引、组合索引。
这个怎么理解啊?key和index的区别,能不能解释的实在一些,看了一些资料,还是不太明白。
嗯这确实是比较容易混淆的地方。
在我们使用MySQL中可能压根不会注意这个问题,因为大多数情况下他们展示出来的效果都差不多,但是还是不能将他们划等号(至少理论上是这样)
索引(index)和约束(key)的区别主要在于二者的出发点不同,索引(index)负责维护表的查找和操作速度,约束(key)负责维护表的完整性。
而有这个困惑的话,很可能是由于MySQL中有一个奇怪现象:
MySQL中的索引是约束性索引(即创建索引自动也会创建约束)
并且MySQL中创建约束也会自动附带索引。
很奇怪吧,两者不同的东西但是创建的时候又会附带给对方,为什么这样做呢?因为原因是:
最后我帮你总结下:
约束有主键约束,唯一约束,外键约束,非空约束,检查约束(在MySQL中压根无法使用检查约束,但可以正常建立),等
索引有普通索引,主键索引,唯一索引,联合索引,全文索引,等。
两者的实现都可以通过建表时实现,建表后的话通过alter语句来实现建立与删除,具体语句直接百度
以上二点我经过测试在MySQL5.5 ,innoDB存储引擎下。
在理论上是不能将MySQL的key和index划等号的,他们不是一回事,但在实际使用中,他们基本没有区别。