MySQL的索引

原创 2016年05月31日 19:27:10
  • 每一个索引就对应着一棵树
(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_建立索引的优缺点

建立索引的优缺点: 为什么要创建索引呢?         这是因为,创建索引可以大大提高系统的性能。          第一、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。      ...
  • superit401
  • superit401
  • 2016年05月01日 20:36
  • 9406

mysql的索引创建及使用

索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。 在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 myt...
  • u011156212
  • u011156212
  • 2015年05月18日 14:25
  • 5652

MySQL的btree索引和hash索引的区别

Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B...
  • kingmax54212008
  • kingmax54212008
  • 2015年11月12日 12:58
  • 5050

mysql-常见问题,索引优化

  • 2017年11月17日 13:51
  • 388KB
  • 下载

MYSQL数据库高级应用宝典含实例(索引、视图、触发器、游标和存储过程)

  • 2015年03月27日 16:23
  • 243KB
  • 下载

MySQL索引分析及优化.pdf

  • 2012年10月24日 15:40
  • 74KB
  • 下载

mysql之Linux安装,重点是索引的优化笔记

  • 2017年08月02日 14:28
  • 15.04MB
  • 下载

MySQL索引背后的数据结构及算法原理

  • 2017年03月13日 12:31
  • 1.07MB
  • 下载

MySQL Innodb 索引原理详解

  • 2017年02月28日 14:17
  • 1.3MB
  • 下载

MySQL 索引最佳实践

  • 2016年07月18日 12:46
  • 658KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL的索引
举报原因:
原因补充:

(最多只允许输入30个字)