我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Mysql中key和index的区别点整理

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Mysql中key和index的区别点整理

我们先来看下代码:


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,无需重复再在上面建立索引了。

以上就是Mysql中key和index的区别点整理的详细内容,更多关于Mysql中的key和index的区别的资料请关注自学编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Mysql中key和index的区别点整理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Mysql中key和index的区别点整理

我们先来看下代码:ALTER TABLE reportblockdetail ADD KEY taskcode (taskcode) ALTER TABLE reportblockdetail DROP KEY taskcode嗯这确实是比
2022-05-12

mysql中key 、primary key 、unique key 与index区别【转】

一、key与primary key区别CREATE TABLE wh_logrecord (logrecord_id int(11) NOT NULL auto_increment,user_name varchar(100) default NULL,ope
mysql中key 、primary key 、unique key 与index区别【转】
2015-04-04

一文讨论Vue2中key和Vue3中key的区别

作为一个Vue开发者,我们都知道,在Vue中使用v-for指令渲染列表时,必须要在每个子组件中加上一个key属性。这个key属性是一个特殊的属性,用于标识每个节点的唯一性。在Vue2.x版本中的key和Vue3.x版本中的key有很大的不同,那么在这篇博客中,我们将会讨论Vue2中的key和Vue3中的key的区别。
2023-05-14

Java中HashTable和HashMap的区别_动力节点Java学院整理

HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的区别。主要的区别有:线程安全性,同步(synchronization),以及速度。HashMap几乎可以等价于Hashtable,除了HashMap
2023-05-31

Java中HashSet和HashMap的区别_动力节点Java学院整理

什么是HashSet?HashSet实现了Set接口,它不允许集合中有重复的值,当我们提到HashSet时,第一件事情就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否
2023-05-31

Struts1和struts2的区别_动力节点Java学院整理

Struts2其实并不是一个陌生的Web框架,Struts2是以Webwork的设计思想为核心,吸收了Struts1的优点,因此,可以认为Struts2是Struts1和Webwork结合的产物。简单来说二者的区别是: 一个是
2023-05-31

Java Thread中start()和run()的区别_动力节点Java学院整理

start() 和 run()的区别说明start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法。start()不能被重复调用。run() : run()就和普通的成员方法一样,可以被重复调用。单独调用run()的
2023-05-31

Java中struts2和spring MVC的区别_动力节点Java学院整理

1、Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restful u
2023-05-31

盘点一下PostgreSQL和MySQL的区别点

上期有说,数据环境切换,由MySQL换成PostgreSQL。 那么为了大家以后少踩坑,简单总结了下我曾踩过的坑和需要注意的点。 首先PostgreSQL有一个模式的概念。 一、格式区别: 和Oracle一样,PostgreSQL也是严格区
2023-08-19

Java中ArrayList和LinkedList之间的区别_动力节点Java学院整理

一、ArrayListArrayList是一个可以处理变长数组的类型,这里不局限于“数”组,ArrayList是一个泛型类,可以存放任意类型的对象。顾名思义,ArrayList是一个数组列表,因此其内部是使用一个数组来存放对象的,因为Obj
2023-05-31

php中点和逗号的区别

php 中点运算符 (.) 和逗号运算符 (,) 的区别如下:点运算符 (.) 用于访问对象属性和方法。逗号运算符 (,) 用于:分割多个表达式的结果。创建单一表达式的组。传递多个参数。PHP 中点和逗号的区别在 PHP 中,点运算符 (
php中点和逗号的区别
2024-04-27

mysql中varchar和varchar2的区别

mysql 中 varchar 和 varchar2 的主要区别在于兼容性和范围限制。varchar 是 mysql 固有的数据类型,长度限制为 255 个字符,与其他数据库不兼容。varchar2 是 oracle 引入的数据类型,作为
mysql中varchar和varchar2的区别
2024-04-26

MySQL中varchar(10)和varchar(100)的区别和优缺点

许多使用MySQL的同学都会使用到varchar这个数据类型。初学者刚开始学习varchar时,一定记得varchar是个变长的类型这个知识点,所以很多初学者在设计表时,就会把varchar(X)的长度设置的非常长,目的也是为了保证以后有更长的数据存储时,能更
MySQL中varchar(10)和varchar(100)的区别和优缺点
2019-10-15

mysql中describe和show的区别

describe 描述表结构(列名、数据类型、约束、索引),仅适用于表对象。而 show 显示有关数据库对象(数据库、表、列、函数、过程等)的元数据,包括表中列的简要列表和数据库服务器的运行时信息。MySQL 中 DESCRIBE 和 SH
mysql中describe和show的区别
2024-04-29

mysql中varchar和nvarchar的区别

varchar 和 nvarchar 的主要区别在于支持的字符集:varchar 仅支持 ascii 或 latin1 字符集,而 nvarchar 支持 unicode 字符集,这意味着 nvarchar 可以存储更多种类的字符,包括中文
mysql中varchar和nvarchar的区别
2024-05-01

编程热搜

目录