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的区别的资料请关注其它相关文章!
上一篇: HTML5之FileReader的使用
下一篇: div相对于外层div居中
推荐阅读
-
PHP中mysql和mysqli的区别
-
mysql中engine=innodb和engine=myisam的区别 (转)_MySQL
-
关于MySql 和SqlServer 中left join , full join的一点区别
-
mysql中int、bigint、smallint 和 tinyint的区别详细介绍
-
mysql中key 、primary key 、unique key 与index区别
-
php中关于mysqli和mysql区别的一些知识点分析
-
MySQL中interactive_timeout和wait_timeout的区别
-
MySQL中REPLACE INTO和INSERT INTO的区别分析
-
mysql中key 、primary key 、unique key 与index区别
-
php中关于mysqli和mysql区别的一些知识点分析