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

谷歌一下:

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

补充下概念:

1、普通索引

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

2、唯一索引

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

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

注:

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

MySQL索引效率对比_mysql下普通索引和唯一索引的效率对比相关推荐

  1. mysql 配置执行计划_MySQL深入学习(二)--配置、索引、执行计划

    MySQL 一.MySQL 5.7 初始化配置 1.初始化数据并配置 # 1.初始化数据 /usr/local/mysql/bin/mysqld --initialize-insecure --use ...

  2. mysql中对一个表的id建立了唯一索引,那么查询的select count(*) ,select count(1) ,select count(id),select count(列名)

    1.mysql中对一个表的id建立了唯一索引,那么查询的select count(*) ,select count(1) ,select count(id),select count(列名) 的查询结 ...

  3. sql加上唯一索引后批量插入_MySQL批量插入遇上唯一索引避免方法

    一.背景 以前使用SQL Server进行表分区的时候就碰到很多关于唯一索引的问题:Step8:SQL Server 当表分区遇上唯一约束,没想到在MySQL的分区中一样会遇到这样的问题:MySQL表 ...

  4. mysql 子查询分页_MySQL子查询,正则表达式,索引,分页,三大范式

    子查询 可以将子查询放在许多的 SQL 子句中,包括: • WHERE 子句• HAVING 子句 • FROM 子句 使用子查询的原则 • 子查询放在圆括号中. • 将子查询放在比较条件的右边. • ...

  5. mysql 走索引 很慢_MySQL 优化:为什么 SQL 走索引还那么慢?

    背景 2019-01-11 9:00-10:00 一个 MySQL 数据库把 CPU 打满了. 硬件配置:256G 内存,48 core 分析过程 接手这个问题时现场已经不在了,信息有限,所以我们先从 ...

  6. mysql主键索引需要创建_mysql主键还需要建立索引吗?

    mysql主键不需要建立索引,主键具备索引的功能:当创建或设置主键的时候,mysql会自动添加一个与主键对应的唯一索引,不需要再做额外的添加.数据库管理系统对于主键会自动生成唯一索引,所以主键是一个特 ...

  7. 【译】索引进阶(八):SQL SERVER唯一索引

    [译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文链接:传送门. 在本章节我们检查唯一索引.唯一索引的特别之处在于它不仅提供了性能益处,而且提供了数据完整性益处.在SQL SER ...

  8. oracle主键和唯一索引,Oracle 主键、唯一键与唯一索引的区别

    如果我们让主键约束或者唯一键约束失效,Oracle自动创建的唯一索引是否会受到影响? SQL> drop table test purge; Table dropped. SQL> cre ...

  9. mysql外部关联视图_MySQL数据库 : 自关联,视图,事物,索引

    自关联查询(自身id关联自身id(主键),查询的时候可以逻辑分为两个表,然后分别起一个别名来区分) select * from areas as city inner join areas as pr ...

最新文章

  1. PHP5.6版本“No input file specified”问题
  2. 服务发现技术选型那点事儿
  3. 能不做自己写个类,也叫java.lang.String
  4. 客户端登录提示找不到表0
  5. 得到classpath和当前类的绝对路径的一些方法
  6. JS中的prototype、__proto__与constructor,原型和原型链
  7. 51nod 1631 小鲨鱼在51nod小学
  8. 马克思知识点总结(二)
  9. 由通项为In(1+1\n)的级数引申...
  10. David Cutler,VMS和Windows NT的首席设计师 (zz.is2120)
  11. [精华]世界500强面试题----[完整版]
  12. mmap设备文件操作
  13. 李宏毅机器学习笔记——Transformer
  14. 【毕业设计】基于大数据的抖音短视频数据分析与可视化 - python 大数据 可视化
  15. 大数据战略对企业生存有多重要?
  16. pxc部署和配置详解
  17. 吴恩达《构建机器学习项目》精炼笔记(2)-- 机器学习策略(下)
  18. Perl 最佳实践(节选) --- 12
  19. Ralink SDK相关指令总结
  20. 使用7z压缩工具批量压缩文件

热门文章

  1. 百度AI生态方法论升级,AI开放平台深入7大细分领域
  2. String 中的hashCode方法
  3. Excel直接转图片
  4. WinDbg配置和使用基础
  5. 基于Javaweb实现人力资源管理系统
  6. 基于SSM实现校友录管理平台
  7. fisher判别分析原理及实现
  8. Android Studio 配置虚拟设备的镜像文件的存放路径
  9. Django集成Markdown编辑器【附源码】
  10. C#可选参数、命名参数、参数数组