转自:http://blog.csdn.net/pengsidong/article/details/62104703,有添加

索引好比书的目录,好比新华字典的拼音、偏旁部首查字,可以帮助人快速查找到需要的内容,

当数据表记录达到几十w级别的时候,索引的作用非常明显。

一、索引的类型

索引类型有多种,哈希、BTREE、全文索引等,其实不管什么类型,都是为了在特定业务场景下方便快速查找数据的算法。

例如哈希索引,key-value形式,最简单的,书本的目录也是类似的。

假如有一本书中,我们已知文章标题要找到这篇文章来阅读,如果没有目录,我们就要翻整本书去找标题,

但是如果标题单独抽出来作为key,页码作为value就可以快速找到内容。

显然书本开头的目录是要占用几页纸的,建立索引也是要消耗资源的。

BTREE索引是另一种算法,不同业务场景使用对应索引会更有效率。

就好比新华字典的目录跟普通的书本目录不同,新华字典可以通过拼音或者偏旁部首的查询方法去快速查到字在第几页,这也是一种“索引”

还有全文索引等,这里不在描述,例如solr、elasticsearch使用的算法可以去研究一下

二、怎么建索引

其实这个应该没有很明确的定义,只能根据具体业务去考虑。

1、索引不是越多越好,索引是要消耗资源的,有些字段信息不经常查询确建立索引反而影响效率。

就好像一本书如果把书中出现的人名、地名等都来建目录,目录可能占据整本书的1/3,而且读者常用的是文章标题目录,这样反而不好

2、相对来说表中经常查询使用的字段需要建立索引;

3、不要对经常变动的数据加索引,经常变化的字段添加索引反而降低性能;

4、小数据量的表建议不要加索引;

5、索引一般应该加在查找条件的字段;如:应加在where、order by子句中经常使用的字段

mysql索引作用的简单理解的更多相关文章

  1. 【转】Mysql索引最左匹配原则理解

    作者:沈杰 链接:https://www.zhihu.com/question/36996520/answer/93256153来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  2. mysql索引最左匹配的理解(转载于知乎回答)

    作者:沈杰链接:https://www.zhihu.com/question/36996520/answer/93256153来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...

  3. C#中的索引器的简单理解和用法

    索引器是一种特殊的类成员,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写. 1.索引器的定义 C#中的类成员可以是任意类型,包括数组和集合.当一个类包含了数组和集合成员时,索引器 ...

  4. index索引的一些简单理解

    index索引(普通索引,允许出现相同的索引内容) 1.索引 索引是在数据量和访问量较大的时候,而出现的一种优化数据库的手段 索引可以提高查询(select)的效率,但相应的,它的 INSERT 与 ...

  5. mysql索引是什么?索引结构和使用详解

    索引是什么 mysql索引: 是一种帮助mysql高效的获取数据的数据结构,这些数据结构以某种方式引用数据,这种结构就是索引.可简单理解为排好序的快速查找数据结构.如果要查“mysql”这个单词,我们 ...

  6. 深入浅出分析MySQL索引设计背后的数据结构

    在我们公司的DB规范中,明确规定: 1.建表语句必须明确指定主键 2.无特殊情况,主键必须单调递增 对于这项规定,很多研发小伙伴不理解.本文就来深入简出地分析MySQL索引设计背后的数据结构和算法,从 ...

  7. MySQL索引的用处

    MySQL索引在MySQL数据库中,可以有效提高查询的效率,尤其是查询数据量非常大时,效果更为明显,往往能使查询速度加快成千上万倍. MySQL索引是很重要的概念,应用的范围非常广.那么,MySQL索 ...

  8. 【索引】理解MySQL——索引与优化

    MySQL 索引 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索 ...

  9. 理解MySQL——索引与优化

    转自:理解MySQL——索引与优化 写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存 ...

随机推荐

  1. Leetcode 674.最长递增序列

    最长递增序列 给定一个未经排序的整数数组,找到最长且连续的的递增序列. 示例 1: 输入: [1,3,5,4,7] 输出: 3 解释: 最长连续递增序列是 [1,3,5], 长度为3. 尽管 [1,3 ...

  2. PAT——甲级1012:The Best Rank(有坑)

    1012 The Best Rank (25 point(s)) To evaluate the performance of our first year CS majored students, ...

  3. Manacher算法——最长回文子串

    一.相关介绍 最长回文子串 s="abcd", 最长回文长度为 1,即a或b或c或d s="ababa", 最长回文长度为 5,即ababa s="a ...

  4. Week2 Teamework from Z.XML 软件分析与用户需求调查(四)Bing桌面及助手的现状与发展

    一.Bing搜索的相关背景 第一,必应搜索前几年的发展重点在于欧美市场,并且取得了一定的成效:根据 Hitwise 的统计数据,Bing 在 2011年3 月份市场占有率突破了 30% 大关,达到 3 ...

  5. [译]10个有关SCP的命令

    原文来源: https://www.tecmint.com/scp-commands-examples/ 基本语法 scp source_file_name username@destination_ ...

  6. [转] const int *a与int *const a,const int *const a的区别

    http://blog.csdn.net/zhangheng837964767/article/details/33783511 关键问题点:const 属于修饰符 ,关键是看const 修饰的位置在 ...

  7. 深入理解Netscaler INat

    深入理解Netscaler INat http://blog.51cto.com/caojin/1898173 Netscaler的INat主要是用作基于目的地址的转换,将client访问的公网IP通 ...

  8. BZOJ 2226 [Spoj 5971] LCMSum | 数论拆式子

    题目: http://www.lydsy.com/JudgeOnline/problem.php?id=2226 题解: 题目要求的是Σn*i/gcd(i,n) i∈[1,n] 把n提出来变成Σi/g ...

  9. JavaScript数组遍历map()的原型扩展

    在 JavaScript 1.6 里,javascript 数组增加了几个非常有用的方法:indexOf.lastIndexOf.every. filter. forEach. map. some,其 ...

  10. 解决echarts中X轴文字过长的问题。【转】

    axisLabel: { interval: , formatter:function(value) { debugger var ret = "";//拼接加\n返回的类目项 ; ...