码迷,mamicode.com
首页 > 数据库 > 详细

MySQL索引

时间:2019-08-02 00:38:55      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:str   技术   btree   b+树   查询   create   book   union   就是   

1.作用:快速找出在某一列中特定的值,用于提高查询效率;

2.优势:提高检索效率,降低数据库IO成本;降低数据库排序成本,降低cpu消耗;

3.劣势:占用空间;降低表的更新的速度;

4.索引分类:

  (1)单值索引:即一个索引只包含单个列,一个表可以有多个单列索引;

  (2)唯一索引:索引的值必须唯一,但允许有空值;//比单质索引更快;

  (3)复合索引:一个索引包含多个列;INDEX Multildx(id,name,age);

  (4)全文索引:只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引;

  (5)空间索引:是对空间数据类型的字段建立的索引;

5.创建操作:

  (1)创建:

    (1)单值索引:CREATE INDEX 索引名 ON table (column1,colum2…);

    (2)唯一索引:create unique index 索引名 on 表名(列名)

  (2)删除:DROP INDEX 索引名 ON table;

  (3)查看:SHOW INDEX FROM 表名;

  (4)自动创建索引:1)在表上定义主键时,会自动创建一个对应的唯一索引;

            2)定义一个外键,会自动创建一个普通索引;

6.explain:查看搜索语句使用的索引;

  例:explain select * from 表名 where 列=列值;

  (1id:select识别符,出现第几次;

  (2)select_type:是否是简单的select查询,不使用union和子查询的为简单查询;

  (3)table:当前查的表;

  (4)type;

  (5)key:实际选用的索引;

  (6)possible_keys;

  (7)key_len:显示索引的长度(也就是使用索引的个数),当key字段为null时,索引的长度为null;

  (8)ref;

  (9)rows;

  (10)extra;

7.索引结构:

1BTree索引:B+树索引

   技术图片

2hash索引:用哈希算法,把键值换算成新的哈希值,只需一次哈希算法就可以找到,速度极快;

8.索引失效:

  1)避免在索引列上出现null;//where  book_name=null;

  2)不要在索引列上进行算术运算;//select age+1 from  user;

  3)避免实现!=或者<>、is null或者is not null、in等可能导致全表遍历的操作;

  4)模糊查询只能使用右边%;

  5where语句后尽可能少用小括号、或者不要出现小括号嵌套小括号;

 

MySQL索引

标签:str   技术   btree   b+树   查询   create   book   union   就是   

原文地址:https://www.cnblogs.com/Tractors/p/11286055.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!