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

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

7383fc97e427d5b76c601f6fd18f2afd.png

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

谷歌一下:

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

补充下概念:

1、普通索引

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

2、唯一索引

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

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

注:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring以及json,fastjson和jackson

(一) RestController 以及 RequestBody spring的这两个注解都需要使用对应的 message-converters 实现 pojo到字符串的转换, 需要配置实现了 GenericHttpMessageConverter 接口的实现类GenericHttpMessageConverter 父接口为HttpMessageConve…

turtle 函数 方法_学python第十一节:turtle深入 了解

学python第十一节:深入分析turtleTurtle是一个直观有趣的图形绘制函数。这节课对turtle的以下几点进行补充:在蟒蛇绘制代码中提到过import 库引用保留字的函数,是补充python程序功能的方式,使用2种编写格式: 第一种引用…

intellij idea中解决java.lang.VerifyError: Expecting a stackmap frame at branch target的方法

【实习第三周,被生活逼成了全栈hhhh从开发写到测试】 报错如下: 经过查找各类资料博客,针对不同的情况有不同的解决办法:1. java源代码是用jdk1.6下开发的,后来环境上替换安装了jdk1.7编译运行。运行报错。我的错误不属…

ArrayList使用内存映射文件

介绍 内存中的计算由于负担得起的硬件而开始兴起,大多数数据保留在RAM中以满足延迟和吞吐量的目标,但是将数据保留在RAM中会增加垃圾收集器的开销,尤其是在您不预先分配的情况下。 因此,有效地我们需要一种无垃圾/无垃圾的方法来避…

JVM的内存区域划分(转载)

原文链接: http://www.cnblogs.com/dolphin0520/p/3613043.html JVM的内存区域划分 学过C语言的朋友都知道C编译器在划分内存区域的时候经常将管理的区域划分为数据段和代码段,数据段包括堆、栈以及静态数据区。那么在Java语言当中,内存又是如…

微抖动,繁忙的等待和绑定CPU

性能分析新机器 当我在新机器上工作时,我想了解它的局限性。 在这篇文章中,我将研究机器的抖动以及忙于等待本周末构建的新PC的影响。 机器的规格很有趣,但不是发布目的。 永远不要少: i7-3970X六核,运行频率为4.5 GH…

Python快速搭建HTTP服务器

<wiz_tmp_tag id"wiz-table-range-border" contenteditable"false" style"display: none;"> 来自为知笔记(Wiz)转载于:https://www.cnblogs.com/linux-wang/p/8142848.html

再见了古诺。 你好Drools工作台。

Drools 6.0发生了许多变化。 随着功能和功能的变化&#xff0c;我们对Guvnor github存储库进行了重组&#xff0c;以更好地反映我们的新架构。 历史上&#xff0c;Guvnor一直是Drools的Web应用程序。 它由Drools专用的编辑器&#xff0c;后端存储库和简化的资产管理系统组成。 …

接口聚合

1.设置pc ip 192.168.1.1 192.168.1.2 2.设置端口聚合&#xff08;两个交换机设置相同&#xff09; Switch(config)#inter range f 0/1-3 Switch(config-if-range)#channel-g 1 mode act Switch(config-if-range)#sw mode trunk Switch(config-if-range)#sw trunk allow vlan …

JAVA 框架-Spring

一.准备工作 1.下载spring工具插件&#xff0c;在STS官网找到与eclipse对应版本的下载链接地址&#xff0c;复制该地址打开eclipse里的Help菜单&#xff0c;选择Install new Software选项&#xff0c;将地址粘贴到work with输入框中&#xff0c;点击add按钮&#xff0c;此时Loc…

HTML中三种定位relative,absolute,fixed后,盒子的百分比宽度及位置易错点

1 . 相对定位relative:顾名思义,相对定位是相对于自己的位置来进行偏移,如下图: 以盒子中心为基准,为每条边的正方向,例: 向右移动20px :  代码为left:20px;或者right:-20px; 向下移动20px : 代码为top:20px;或者bottom:-20px; 2 . 绝对定位:absolute 以其第一个定位的…

JMeter定制功能实现

JMeter提供了可在采样器中使用的功能。 在编写复杂的测试计划时&#xff0c;您会感到JMeter缺少某些方法。 您使用Beanshell脚本定义自己的自定义方法。 JMeter调用Beanshell解释器来运行脚本。 只要您不产生高负载&#xff08;大量线程&#xff09;&#xff0c;此方法就可以正…

vue安装

1、查看版本 npm -v cnpm -v 升级 npm cnpm install npm -g 2、cnpm install vue 3、全局安装 vue-cli cnpm install --global vue-cli 4、创建一个基于webpack模板的新项目 vue init webpack my-project 5、运行项目 cd my-project cnpm install cnpm run dev 6、报错 解决办…

母函数

首先是4个重要的泰勒展开式 1. 2. 3.(e(-x)e(x))/21x^2/2!x^4/4!x^6/6!...... 4.(e(x)-e(-x))/2xx^3/3!x^5/5!x^7/7!...... 之后是两类母函数的应用 总体思路&#xff1a;利用&#xff08;x^ax^bx^c&#xff09;指数表示对某一物品取用的数量&#xff0c;系数表示方案数 1.普通…

如何在本地运行查看github上的开源项目

看中了一款很多星星的github的项目&#xff0c;想把这个项目拉到自己的电脑上运行查看项目效果&#xff0c;该怎么做&#xff1f;示例&#xff1a;我们今天要看的 github项目地址&#xff1a;https://github.com/lzxb/vue-cnode1.克隆项目&#xff1a; git clone [https://gith…

Spring JPA数据+休眠+ MySQL + Maven

在Spring MVC的帮助下开发Web应用程序意味着要创建几个逻辑架构层。 层之一是DAO&#xff08;存储库&#xff09;层。 它负责与数据库进行通信。 如果您至少开发了DAO层一次&#xff0c;则应该知道它涉及许多样板代码。 Spring Data本身就是与DAO相关的日常工作的一部分。 在帖…

关于DJANGO MODELS的个人理解和RELATED_NAME的使用

转自&#xff1a;http://www.cnblogs.com/blogofwyl/p/4283513.html作为一个新人(刚刚大学还没有毕业就出来实习&#xff0c;可以说是真的什么都不知到&#xff0c;什么都要重新学&#xff0c;但是这样真的可以锻炼自己的意志力和能力)。现在在公司是前端和后端一起坐&#xff…

015迭代器

注意迭代器和可迭代对象不同#迭代器&#xff1a;1、有iter方法&#xff0c;2、有next方法li[1,2,3,4,5]diter(li) # 等于li.__iter__()print(d) # <list_iteratorobjectat0x00000174316CC3C8>可以通过next方法取出元素。for循环就是这样的。for循环内部做的三件事1、调用…

CSS属性之attr()

attr()准确的说&#xff0c;不应该是一个属性&#xff0c;而是一个CSS的函数&#xff0c;我们先看看MDN上的介绍吧&#xff1a; Summary The attr() CSS function is used to retrieve the value of an attribute of the selected element and use it in the style sheet. It c…

MySQL大小写敏感的解决方案

前言&#xff1a;对于MySQL的大小写敏感的影响&#xff0c;笔者在一个小项目中深刻的体会到&#xff1a;当想要查询一条数据时&#xff0c;总是出来两条或多条&#xff0c;后来发现是大小写敏感造成的原因&#xff0c;本文就该问题提出解决方案。 1.MySQL大小写敏感的控制 mysq…