1、索引类型
Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。

1. FULLTEXT
即为全文索引,目前只有MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不过目前只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引。

全文索引并不是和MyISAM一起诞生的,它的出现是为了解决WHERE name LIKE “%word%"这类针对文本的模糊查询效率较低的问题。

2. HASH
由于HASH的唯一(几乎100%的唯一)及类似键值对的形式,很适合作为索引。

HASH索引可以一次定位,不需要像树形索引那样逐层查找,因此具有极高的效率。但是,这种高效是有条件的,即只在“=”和“in”条件下高效,对于范围查询、排序及组合索引仍然效率不高。

3. BTREE
BTREE索引就是一种将索引值按一定的算法,存入一个树形的数据结构中(二叉树),每次查询都是从树的入口root开始,依次遍历node,获取leaf。这是MySQL里默认和最常用的索引类型。

4. RTREE
RTREE在MySQL很少使用,仅支持geometry数据类型,支持该类型的存储引擎只有MyISAM、BDb、InnoDb、NDb、Archive几种。

相对于BTREE,RTREE的优势在于范围查找。

2、索引种类
普通索引:仅加速查询

唯一索引:加速查询 + 列值唯一(可以有null)

主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个

组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并

全文索引:对文本的内容进行分词,进行搜索

ps.

索引合并,使用多个单列索引组合搜索
覆盖索引,select的数据列只用从索引中就能够取得,不必读取数据行,换句话说查询列要被所建的索引覆盖

3、什么情况下不推荐使用索引?
1) 数据唯一性差(一个字段的取值只有几种时)的字段不要使用索引

比如性别,只有两种可能数据。意味着索引的二叉树级别少,多是平级。这样的二叉树查找无异于全表扫描。

2) 频繁更新的字段不要使用索引

比如logincount登录次数,频繁变化导致索引也频繁变化,增大数据库工作量,降低效率。

3) 字段不在where语句出现时不要添加索引,如果where后含IS NULL /IS NOT NULL/ like ‘%输入符%’等条件,不建议使用索引

只有在where语句出现,mysql才会去使用索引

4) where 子句里对索引列使用不等于(<>),使用索引效果一般

mysql索引的常识相关推荐

  1. mysql索引空间太大_MySQL优化索引

    1.  MySQL如何使用索引 索引用于快速查找具有特定列值的行.如果没有索引,MySQL必须从第一行开始,然后遍历整个表以找到相关的行.表越大,花费越多.如果表中有相关列的索引,MySQL可以快速确 ...

  2. mysql索引教程_MySQL教程96-MySQL索引类型

    索引的类型和存储引擎有关,每种存储引擎所支持的索引类型不一定完全相同.MySQL 索引可以从存储方式.逻辑角度和实际使用的角度来进行分类. 存储方式区分 根据存储方式的不同,MySQL 中常用的索引在 ...

  3. mysql 树形结构_再读MySQL索引-《高性能MySQL》索引手记

    最近工作中经常和MySQL打交道,当数据量小的时候,不同查询方式以及是否使用索引并无大碍,当数据量随着业务的成长急剧加速时,索引的重要性不言而喻. 本篇文章以<高性能MySQL>中的索引章 ...

  4. MySQL索引背后的数据结构及算法原理【转】

    http://blog.codinglabs.org/articles/theory-of-mysql-index.html MySQL索引背后的数据结构及算法原理[转] 摘要 本文以MySQL数据库 ...

  5. mysql 索引合并

    索引合并是mysql底层为我们提供的智能算法.本文就介绍了mysql 索引合并的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 索引合并是mysql底层为我们提 ...

  6. mysql中groupby会用到索引吗_开发人员不得不知的MySQL索引和查询优化

    本文主要总结了工作中一些常用的操作及不合理的操作,在对慢查询进行优化时收集的一些有用的资料和信息,本文适合有 MySQL 基础的开发人员. 索引相关 索引基数 基数是数据列所包含的不同值的数量,例如, ...

  7. mysql索引底层实现原理_mysql的索引底层之实现原理

    MySQL索引背后的数据结构及算法原理 一.定义 索引定义:索引(Index)是帮助MySQL高效获取数据的数据结构. 本质:索引是数据结构. 二.B-Tree m阶B-Tree满足以下条件: 1.每 ...

  8. 不会MySQL索引,面试官让回家等通知!

    " 你是不是对于 MySQL 索引的知识点一直都像大杂烩,好像什么都知道,如果进行深究的话可能一个也答不上来. 假如你去面试,面试官让你聊一下对索引的理解,然而你对索引的理解仅限于,检索数据 ...

  9. ElasticSearch 索引 VS MySQL 索引

    前言 这段时间在维护产品的搜索功能,每次在管理台看到 elasticsearch 这么高效的查询效率我都很好奇他是如何做到的. 这甚至比在我本地使用 MySQL 通过主键的查询速度还快. 为此我搜索了 ...

  10. mysql索引排序算法_MySQL中利用索引对数据进行排序的基础教程

    MySQL中,有两种方式生成有序结果集:一是使用filesort,二是按索引顺序扫描.利用索引进行排序操作是非常快的,而且可以利用同一索引同时进行查找和排序操作.当索引的顺序与ORDER BY中的列顺 ...

最新文章

  1. 用零知识证明解决投票安全
  2. Foundation框架: 11.NSDate的基本认识和使用
  3. 2015年百度二面试题
  4. Django 3.2.5博客开发教程:体验数据查询
  5. 数据库 Linux下的MySQL数据库管理
  6. android 音频合成_【Android工具】用手机测量噪声的工具软件,噪声仪分贝计,量化噪声声音工具...
  7. rsa php openssl,openssl rsa 使用简介
  8. cpython vm_【协程原理】 - cPython的VM真变态
  9. Python+OpenCV:Canny边缘检测
  10. 华为有国产芯片的服务器吗,华为国产电脑上市!还有一大批国产自主电脑发布:采用国产芯/系统...
  11. android多个网络请求如何依次执行,Android 并发和串行网络请求
  12. tiledmap 图块属性_TiledMap详解
  13. html页面数学公式添加(附图)
  14. Java中this和super的区别
  15. jQ UI 后台管理系统基础UI
  16. android10一键root权限获取,完美root方法教你如何一键获取手机ROOT权限
  17. 帝国cms配置php,帝国cms如何安装
  18. Win10系统更新卡住了怎么办?如何修复?
  19. Java程序员从笨鸟到菜鸟之(五十七)细谈Hibernate(八)Hibernate集合Map关系映射
  20. 茂名天源石化宣传“世界急救日”活动 普及急救知识

热门文章

  1. win10开启虚拟化服务器,Windows10开启Hyper-V虚拟机管理器
  2. 数据库自定义聚合函数(求和、标准差、平均值、几何平均值、几何标准差、偏度系数、峰度系数)
  3. 微信怎么不支持华为鸿蒙,微信迟迟不加入鸿蒙,华为为何不着急呢?
  4. 手机微信连不上wifi服务器怎么回事,微信连不上wifi怎么办?
  5. Docker-基本命令和漏洞分享
  6. UVa-11137 Ingenuous Cubrency
  7. 从零学习AI安全监控项目【附详细代码】
  8. html网页综合项目实战
  9. mac上好用的压缩_Mac图片压缩工具(早晚用到,建议收藏)
  10. PS如何压缩图片而不失真