key与index在Mysql中有什么区别

67次阅读
没有评论

共计 1747 个字符,预计需要花费 5 分钟才能阅读完成。

自动写代码机器人,免费开通

本篇文章给大家分享的是有关 key 与 index 在 Mysql 中有什么区别,丸趣 TV 小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着丸趣 TV 小编一起来看看吧。

我们先来看下代码:

ALTER TABLE reportblockdetail ADD KEY taskcode (taskcode)
ALTER TABLE reportblockdetail DROP KEY taskcode

嗯这确实是比较容易混淆的地方。

在我们使用 MySQL 中可能压根不会注意这个问题,因为大多数情况下他们展示出来的效果都差不多,但是还是不能将他们划等号(至少理论上是这样)

索引(index)和约束(key)的区别主要在于二者的出发点不同,索引 (index) 负责维护表的查找和操作速度,约束 (key) 负责维护表的完整性。

而有这个困惑的话,很可能是由于 MySQL 中有一个奇怪现象:

MySQL 中的索引是约束性索引(即创建索引自动也会创建约束)

并且 MySQL 中创建约束也会自动附带索引。

很奇怪吧,两者不同的东西但是创建的时候又会附带给对方,为什么这样做呢?因为原因是:

MySQL 中的约束效果是通过索引来实现的,MySQL 数据库判断是否当前列是否 unique 就是通过 unique 索引判断的。

最后总结下:

约束有主键约束,唯一约束,外键约束,非空约束,检查约束(在 MySQL 中压根无法使用检查约束,但可以正常建立),等

索引有普通索引,主键索引,唯一索引,联合索引,全文索引,等。

两者的实现都可以通过建表时实现,建表后的话通过 alter 语句来实现建立与删除,具体语句直接百度以上二点我经过测试在 MySQL5.5,innoDB 存储引擎下。

在理论上是不能将 MySQL 的 key 和 index 划等号的,他们不是一回事,但在实际使用中,他们基本没有区别。

内容扩展:

key 与 primary key 区别

CREATE TABLE wh_logrecord ( 
logrecord_id int(11) NOT NULL auto_increment, 
user_name varchar(100) default NULL, 
operation_time datetime default NULL, 
logrecord_operation varchar(100) default NULL, 
PRIMARY KEY (logrecord_id), 
KEY wh_logrecord_user_name (user_name) 
)

KEY 与 INDEX 区别

批注:这部分我仍云里雾里。
KEY 通常是 INDEX 同义词。如果关键字属性 PRIMARY KEY 在列定义中已给定,则 PRIMARY KEY 也可以只指定为 KEY。这么做的目的是与其它数据库系统兼容。PRIMARY KEY 是一个唯一 KEY,此时,所有的关键字列必须定义为 NOT NULL。如果这些列没有被明确地定义为 NOT NULL,MySQL 应隐含地定义这些列。一个表只有一个 PRIMARY KEY。

MySQL 中 Index 与 Key 的区别

Key 即键值,是关系模型理论中的一部份,比如有主键(Primary Key),外键(Foreign Key)等,用于数据完整性检否与唯一性约束等。而 Index 则处于实现层面,比如可以对表个的任意列建立索引,那么当建立索引的列处于 SQL 语句中的 Where 条件中时,就可以得到快速的数据定位,从而快速检索。至于 Unique Index,则只是属于 Index 中的一种而已,建立了 Unique Index 表示此列数据不可重复,猜想 MySQL 对 Unique Index 类型的索引可以做进一步特殊优化吧。

于是乎,在设计表的时候,Key 只是要处于模型层面的,而当需要进行查询优化,则对相关列建立索引即可。

另外,在 MySQL 中,对于一个 Primary Key 的列,MySQL 已经自动对其建立了 Unique Index,无需重复再在上面建立索引了。

以上就是 key 与 index 在 Mysql 中有什么区别,丸趣 TV 小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注丸趣 TV 行业资讯频道。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1747字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)