每一个索引就对应着一棵树

(1) 主键:MySQL会以主键的值构造一棵树,其叶子节点存放着该主键对应的整行数据。因此一张表在数据结构上就等价于一颗以主键排序好的树

(2)辅助索引:自己建的索引一般都叫辅助索引,辅助索引树的叶子节点存放着两样东西,即辅助索引字段的值以及它所对应的主键值。因此当走辅助索引时,先从辅助索引树找到所需的主键,再到主键树上取出整行数据中的所需字段。举个例子,设ID为主键,updatetime为辅助索引,name无索引,体味下下面两条查询的不同:

select ID from table where updatetime = today

select name from table where updatetime = today

前者直接在辅助索引树的叶子节点取出ID就返回了,后者还要再去主键树根据ID取name

(3)联合索引:如KEY(updatetime, name),则辅助索引树的叶子节点存放着(updatetime,name,ID)并先按updatetime排序好,updatetime相同再按name排序。所以此时查询:select xx from table where name = xx是没法走这个联合索引的,但若是:select xx from table where updatetime = today order by name就很屌了,因为当根据updatetime = today取出来的rows已经按name排序好了

一次查询同一张表的话,只能用一条索引

(1)MySQL会很只能的去分析走哪条索引扫描量少,然后选择一条最优的索引进行select。因此若是表建了一些奇奇怪怪的索引时,反倒会干扰MySQL的分析

(2)对于一些区分度不高的索引,如status、type这类只有几个值的字段,建索引就没意义了(索引树的树杈太少)

(3)可以在查询时强制指定使用某一个索引,如select xx from xx FORCE INDEX(IX_updatetime),就会强制使查询走IX_updatetime这个索引

查询别乱写,否则容易导致查询无法使用索引

(1)like查询时,通配符“%”放在最前面时无法使用索引

select xxx like ‘%abc’无法走索引,select xxx like ‘a%bc’可以走索引

(2)对列的函数运算无法走索引

select xxx where md5(password) = ‘xxx’无法走索引

(3)OR子句也用不到索引

(4)等等很多情况

mysql索引红黑联盟_MySQL的索引相关推荐

  1. mysql索引红黑联盟_MySQL索引

    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 可以把索引看作是汉语字典的目录页,我们可以按拼音.笔画.偏旁部首等排序的目录(索引)快速查找到需要的字. ...

  2. 我就纳闷了。。。红黑联盟。。的水印真的好明显,欺负我大csdn

    红黑联盟的人为毛老转载我的原创文章,而且还不标明出处... 还有其他的我就不说了.. 看看下面这张图: 有多可怜: 里面我的csdn是最不明显的....郁闷啊郁闷..    哎,也没什么了, 就那么回 ...

  3. it技术 学习资料库 红黑联盟:

    http://www.xuexi111.com/book/jisuanji/68383.html 红黑联盟: android教程_android高级教程_android教程 pdf_android开发 ...

  4. mysql 查找多组数据结构_MySql主要索引数据结构

    索引数据结构 1. 二叉搜索树(Binary Search Tree)二叉搜索树是每个节点最多有两个子节点的树,按照右侧子节点大于本节点,左侧子节点小于本节点的规律排列,可以用作搜索,结构如下图所示 ...

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

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

  6. mysql like 多个条件_MySQL高性能索引策略

    索引类型 从物理存储角度: 聚集索引 InnoDB 叶节点包含了完整的数据记录.这种索引叫做聚集索引.因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有 ...

  7. mysql 加索引不起作用_mysql加索引及索引失效的情况

    前言:B+TREE索引的本质是多路绝对平衡查找树,磁盘指针,相当于书的目录,索引不是越多越好. 一:如何加索引 1.PRIMARY  KEY(主键索引) mysql>ALTER  TABLE   ...

  8. mysql延迟关联为什么快_MySQL 覆盖索引与延迟关联详解

    本期来谈谈覆盖索引与延迟关联.在此之前,我们先简单建立一个订单表 Orders 用于举例说明.表中共包含 3 个字段: id int product_id name CREATE TABLE `ord ...

  9. mysql引用表无效列_Mysql使用索引可能失效的场景

    1.WHERE字句的查询条件里有不等于号(WHERE column!=-),MYSQL将无法使用索引 2.类似地,如果WHERE字句的查询条件里使用了函数(如:WHERE DAY(column)=-) ...

  10. mysql创建索引的关键字为_MySQL创建索引(CREATE INDEX)

    索引的建立对于 MySQL 数据库的高效运行是很重要的,索引可以大大提升 MySQL 的检索速度. 基本语法 MySQL 提供了三种创建索引的方法: 1) 使用 CREATE INDEX 语句 可以使 ...

最新文章

  1. 由于未能创建 Microsoft Visual C# 2008 编译器,因此未能打开项目 ...的解决方法...
  2. 浅析SEO优化怎样打好企业新站优化基础稳步提升排名
  3. python详细安装教程环境配置-python3.6环境安装+pip环境配置教程图文详解
  4. oracle中pdb,Oracle12c数据库创建pdb的3种方法
  5. html中如何实现选择存储路径的功能_HTML是Web前端的基础知识,刚入门的你真的学对了吗?...
  6. java内部类实现方式_Java内部类详解
  7. 请使用C#的文件流来拷贝文件
  8. MATLAB中特殊图形的绘制
  9. Spring Cloud 2020年路线图发布
  10. 中文分词的python实现----HMM、FMM
  11. 某电商商品搜索系统架构设计
  12. 黑苹果开启核显加速_「黑苹果」关于双显卡正确开启核显加速
  13. linux 系统的磁盘 mbr 转gpt方法
  14. php yi ju hua,汉音对照 这句话应该如何翻译? zhe ju hua ying gai ru he fan yi ? - 王朝网络 - wangchao.net.cn...
  15. MAtlab wavefront,MATLAB:像Wavefront算法一样制作矩阵
  16. 热门股权项目:富滇银行股份有限公司0.0232%股权转让
  17. 不可随便给一个人说晚安『你知道它的真正意义吗?不想以后后悔就进来看看吧』
  18. 一公司C#编程规范v2.0(转)
  19. 回顾 | OpenAI 入门(一)- OpenAI 基础
  20. GBK编码和UTF-8编码的区别

热门文章

  1. mybatis-generator自动生成代码(lombok带注释)
  2. 6.2.6 String_Number
  3. 技术人员,你的表达能力怎样?
  4. oracle11g | 行转列
  5. 搭建代码审查系统Gerrit
  6. 解决 找不到方法:“Void System.Web.UI.HtmlControls.HtmlForm.set_Action(System.String)”。
  7. .Net1.x转换为.Net 2.0要注意的几个问题
  8. puppet的配置清单书写
  9. 【转载】【原创】贵在,难在,成在
  10. SQLyog备份数据库