mysql下普通索引和唯一索引的效率对比


今天在我的虚拟机中布置了环境,测试抓图如下:

抓的这几个都是第一次执行的,刷了几次后,取平均值,效率大致相同,而且如果在一个列上同时建唯一索引和普通索引的话,mysql会自动选择唯一索引。

谷歌一下:

唯一索引和普通索引使用的结构都是B-tree,执行时间复杂度都是O(log n)。

补充下概念:

1、普通索引

  普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHEREcolumn=)或排序条件(ORDERBYcolumn)中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。

2、唯一索引

  普通索引允许被索引的数据列包含重复的值。比如说,因为人有可能同名,所以同一个姓名在同一个“员工个人资料”数据表里可能出现两次或更多次。

如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。这么做的好处:一是简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率;二是MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,MySQL将拒绝插入那条新记录。也就是说,唯一索引可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。

注:

终于找到同事说执行效率不一样的原因了,他在普通索引上创建的是前缀索引,只取了前16个字节,而唯一索引使用的全字节 :)



相关阅读:
在硬盘中安装Linux操作系统最简单方法
从身边小事做起 为开源发展增砖添瓦
链接和文本标签的应用
js 操作select相关方法函数
在Linux下用Smbmount命令挂载Windows共享
PHP教程.应用实例--14
openssl几个简单使用方法介绍
Fedora Core 4.0 安装图解
纯CSS实现扑克牌效果
SWFObject Flash js调用类
FreeBSD上的NFS
JavaScript的面向对象方法以及差别
PHP+FLASH实现上传文件进度条相关文件 下载
出现The file /boot/grub/stage1 not read cor 解决办法
快速导航

Copyright © 2016 phpStudy |