Mysql学习笔记二之索引基础

一、索引结构

1 B-Tree索引

在谈论索引的时候,没有指明类型的时候,指的就是B-Tree索引,使用B-tree数据结构来存储数据,大部分mysql存储引擎都支持这种索引(archive存储引擎除外,在5.1才开始支持自增列Auto_increment的索引)。
 B-tree 索引是顺序组织存储的,所以很适合用来查找范围数据,此时效率会非常高。
 B-tree索引支持:全值匹配,匹配最左前缀、匹配列前缀、匹配范围值、精确匹配某一列并范围匹配另外一列、只访问索引的查询,由于索引树是有序的,所以除按值查询之外,还可以用于查询中的order by 的操作。

B-Tree 的限制:
  1.如果不是按照索引的最左列开始查找,则无法使用索引,例如建立了key(fast_name,last_name,date) 这个索引,那么在对last_name 和date 进行精确查询时(在不查询fast_name的情况下)。
  2.不能跳过索引中的列,如上面建立的索引来举例,使用fast_name,date 但是没有指定last_name,此时只使用date做为索引。
  3.如果查询中有某个列的范围查询,则其右边所有的列都无法使用索引优化查找,例如where fast_name='liutao' and last_name like '%'+'liu'+"%' and date='2017-6-25',这个查询只使用fast_name,last_name这俩项作为索引列。

2 哈希索引

哈希索引基于哈希表实现,只有精确搜索匹配索引所有列的查询才能生效如下表(只在mysql存储引擎位Memory和NDB集群引擎时才能使用)。
 InnoDB引擎有一个特殊的功能叫做“自适应哈希索引”(adaptive hash index)",当InnoDB注意到某些索引值别使用的非常频繁时,它会在内存中基于B-Tree 索引之上再创建一个哈希索引,这式B-Tree 索引也具有一些哈希索引的一些优点,

create table testhash(
    fname varchar(50) not null,
    lname varchar(50) not null,
    key using hash(fname)
)engin=memory;

哈希表的限制:
1.哈希索引只包含哈希值和行指针,而不存储字段值,所以不能使用索引中的值来避免免读取行。
2.哈希索引数据并不是按照索引值顺序存储的,所有无法使用group by 排序。
3.哈希也不支持分部索引列匹配查找,因为哈希索引始终是使用索引列的全部内容来计算哈希值的,例如建立了(a,b,c)这各索引,当查询只有数据列a时是不会使用索引的。
4.哈希索引不支持范围查询
5.如果哈希冲突很多的话,一些索引维护操作的代价也会很高。

3 R-tree(空间数据索引)

MyISAM存储引擎支持空间索引,可以用作地理数据存储。和B-Tree索引不同,这类索引无前缀查询。空间索引会从所有维度来索引数据。查询时可以有效的使用任意维度来组合查询。

二、索引类型

1.常见的索引类别有:

  • 主键索引: primary key
alter table [表名] add primary key ([列名])
  • 唯一索引: unique
alter table [表名] add unique   ([列名])
  • 普通索引:index
alter table [表名] add index [索引名称] ([列名]);
  • 组合索引:index
alter table [表名] add index [索引名称] ([列名],[列名],[列名]....);
  • 全文索引:fulltext
alter table [表名] add fulltext ([列名]);

2.各索引的区别

普通索引:最基本的索引,没有任何限制
唯一索引:与”普通索引”类似,不同的就是:索引列的值必须唯一,但允许有空值。
主键索引:它 是一种特殊的唯一索引,不允许有空值。
全文索引:仅可用于 MyISAM 表,针对较大的数据,生成全文索引很耗时好空间。
组合索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则。

三、删除索引

  drop index index_name on table_name;
  alter table table_name drop index index_name;
  alter table table_name drop primary key

前俩条移除语句式等价的,第三条是单独删除主键的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容

  • 很多人的生活状态要么是活在过去的阴影中,无法释怀,要么是对未来的恐惧和担忧,迷茫不知所措。 如果说...
    张赟美梵阅读 681评论 0 10
  • 走进质管中心聂增江党员突击队,你会感觉到这是一个温暖的团队,大家你一言我一语说着班里的事。 ...
    成品曹红霞阅读 381评论 0 0