mysql索引作用的简单理解
转自: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索引作用的简单理解的更多相关文章
- 【转】Mysql索引最左匹配原则理解
作者:沈杰 链接:https://www.zhihu.com/question/36996520/answer/93256153来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- mysql索引最左匹配的理解(转载于知乎回答)
作者:沈杰链接:https://www.zhihu.com/question/36996520/answer/93256153来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...
- C#中的索引器的简单理解和用法
索引器是一种特殊的类成员,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写. 1.索引器的定义 C#中的类成员可以是任意类型,包括数组和集合.当一个类包含了数组和集合成员时,索引器 ...
- index索引的一些简单理解
index索引(普通索引,允许出现相同的索引内容) 1.索引 索引是在数据量和访问量较大的时候,而出现的一种优化数据库的手段 索引可以提高查询(select)的效率,但相应的,它的 INSERT 与 ...
- mysql索引是什么?索引结构和使用详解
索引是什么 mysql索引: 是一种帮助mysql高效的获取数据的数据结构,这些数据结构以某种方式引用数据,这种结构就是索引.可简单理解为排好序的快速查找数据结构.如果要查“mysql”这个单词,我们 ...
- 深入浅出分析MySQL索引设计背后的数据结构
在我们公司的DB规范中,明确规定: 1.建表语句必须明确指定主键 2.无特殊情况,主键必须单调递增 对于这项规定,很多研发小伙伴不理解.本文就来深入简出地分析MySQL索引设计背后的数据结构和算法,从 ...
- MySQL索引的用处
MySQL索引在MySQL数据库中,可以有效提高查询的效率,尤其是查询数据量非常大时,效果更为明显,往往能使查询速度加快成千上万倍. MySQL索引是很重要的概念,应用的范围非常广.那么,MySQL索 ...
- 【索引】理解MySQL——索引与优化
MySQL 索引 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索 ...
- 理解MySQL——索引与优化
转自:理解MySQL——索引与优化 写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存 ...
随机推荐
- 【集训试题】exam 信心考 最小割
题意概述: 有N个人,A,B两个考场.如果学生i在A考场,总信心值增加xi:如果学生i在B考场,总信心值增加yi.其中还有m对好友,当第i对好友的两个人都在A考场时,总信心值增加ai:如果两人都在B考 ...
- [译]Python - socket.error: Cannot assign requested address
原文来源: https://stackoverflow.com/questions/48306528/python-socket-error-cannot-assign-requested-addre ...
- 用Navicat建表的字段编码问题
最近在做Amazon的订单导入的时候,一直报字符编码的错误. java.sql.SQLException: Incorrect stringvalue: '\xB7\xAD\xA0...' for c ...
- elementUI默认样式修改不成功的问题
问题: login.vue中引入<style lang="postcss" src="./login.css" scoped></style& ...
- [剑指Offer] 22.从上往下打印二叉树
[思路]广度优先遍历,队列实现 class Solution { public: vector<int> PrintFromTopToBottom(TreeNode* root) { qu ...
- Netscaler重置密码的方法
Netscaler重置密码的方法 http://blog.51cto.com/caojin/1898401 有时候我们会碰到忘记Netscaler的密码,或接手别人的设备而不知道密码的情况.在这种情况 ...
- CLion 终于支持 jump outside closing bracket/quote with Tab 了!
我觉得这个 feature 真的很有用.一直期待 CLion 加上这个 feature.今天才知道最新版本(CLion 2018.3.4)中已经有这个功能了,不过我不清楚从哪个版本开始支持的. How ...
- Backup and Restore MySQL Database using mysqlhotcopy
mysqlhotcopy is a perl script that comes with MySQL installation. This locks the table, flush the ta ...
- MySQL DELAY_KEY_WRITE Option
delay_key_write This option applies only to MyISAM tables. It can have one of the following values ...
- 修改centos的源
最近都在使用国内的VPS.系统统一使用的都是Linux系统.但是,有一些服务商的系统给默认设置的是国外的.这样就会导致下载速度缓慢.于是,找到了国内几家比较热门的镜像点.奉献给大家.下面的镜像全部支持 ...