键与索引在Mysql中有什么区别

  介绍

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

我们先来看下代码:

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

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

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

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

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

<李>

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

<李>

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

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

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

最后总结下:

<李>

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

<李>

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

<李>

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

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

内容扩展:

<强>键与主键区别

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

<>强键与索引区别

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

MySQL中指数与关键的区别

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

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

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

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

键与索引在Mysql中有什么区别