Mysql 索引总结

1. 聚簇索引

InnoDB 引擎使用的就是聚簇索引,就是主键的索引,是一种数据的存储方式。所有的数据都是存储在索引的叶子结点上(与MySAM 引擎不同,MySAM是传统方式),这样本质也是一种加速查找的方式,搜索索引就可以拿到想要的行所有的数据;不过对于不是顺序的插入(比如随机ID插入)不友好,会犹豫叶分裂、行移动重排的问题导致插入速度慢和数据碎片;全表扫描相对MySAM也会慢一些;具体《高性能Mysql》P163

2. 二级索引

非聚簇索引都是二级索引,即非主键索引就是二级索引;二级索引叶子节点保存的是本字段的值和主键id值,查询其他内容还需要拿着主键id再去查聚簇索引,就是查询了两次B+Tree,相对会慢一点

3. 覆盖索引

定义: 如果一个索引包含(或者说覆盖)所有需要查询的字段的值,我们称这种索引为“覆盖索引”。

覆盖索引可以极大提高性能,即只有一次B+Tree查询就搞定了

在EXPLAIN时,如果在Extra 中开到“Using Index”,说明这条SQL利用到了覆盖索引

比如:

CREATE TABLE IF NOT EXISTS `user`(
`id` INT UNSIGNED AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL,
`sex` VARCHAR(40) NOT NULL,
`birthday` DATE,
PRIMARY KEY ( `id` )
KEY `idx_name` (`name`) USING BTREE,
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
SELECT name FROM user

即可以直接使用到覆盖索引,因为name字段的索引树里本身就有name的值,就不需要去聚簇索引里再查了

Mysql_索引总结笔记的更多相关文章

  1. mysql_索引原理及优化

    思考: 我们知道mysql最好的数据存储量级是百万级别,是的往往在百万级别或者几十万级别就会出现慢查询(我对慢查询的定义是大于1秒),几年前我所在的一个做pos机支付的联机交易的核心系统组,当时就做过 ...

  2. Mongodb的索引--学习笔记(未完)

    全文索引 建立方法: --在articles集合的key字段上创建全文索引 db.articles.ensureIndex({key:"text"}) --在articles集合的 ...

  3. 详谈 oracle 索引 (笔记)

    1.oracle索引空值问题 当在有空值得列上建立单列索引时,如果搜索条件为 is null 在解释计划中可以看到,对于此列oracle并没有使用索引查询: 但是当建立的是多列索引是,就会按照索引来进 ...

  4. mysql索引使用笔记

    1.使用explain语句查看性能mysql> explain select product_id from orders where order_id in (123, 312, 223, 1 ...

  5. 关于Mysql索引的笔记

    MySQL索引原理 索引目的 索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql.如果没有索引,那么你可能需 ...

  6. mysql_索引

    .默认情况下大多使用Btree索引,该索引就是通常所见 唯一索引.聚簇索引等等,Btree用在OLTP,加快查询速度 查询表索引 show  index  from  tablename 查询表结构 ...

  7. Mysql 索引复习笔记

    之前学习索引后由于一直没怎么用,所以也只是粗略看了一下,最近发现索引的用处很大,并且也很多知识点,在此做复习记录. 什么是索引? 百度百科是这样描述的: 索引是为来加速对表中数据行中的检索而创建的一种 ...

  8. Mysql索引学习笔记

    1.btree索引与hash索引 下列范围查询适用于 btree索引和hash索引: SELECT * FROM t1 WHERE key_col = 1 OR key_col IN (15,18,2 ...

  9. 本周学习总结(ng-zorro/MDN索引/读书笔记)

    按钮 <button ng-button nzType="primary">Primary</button> nzType="" pri ...

随机推荐

  1. js烧脑面试题大赏

    本文精选了20多道具有一定迷惑性的js题,主要考察的是类型判断.作用域.this指向.原型.事件循环等知识点,每道题都配有笔者详细傻瓜式的解析,偏向于初学者,大佬请随意. 第1题 let a = 1 ...

  2. windows下telnet的用法

    前言 这里利用Windows7下如何使用Telnet命令给大家总结如下: 第一步:在控制面板里,点击"程序"选项 第二步:在程序选项下,点击"打开或关闭Windows功能 ...

  3. 20行python代码,轻松获取各路小说,非常简单

    哔哔两句 作为现代青年,我相信应该没几个没看过小说的吧,嘿嘿~ 一般来说咱们书荒的时候怎么办?自然是去起某点排行榜先找到小说名字,然后再找度娘一搜,哎 ,笔趣阁就出来答案了,美滋滋~但是那多麻烦,咱们 ...

  4. nginx 出现An error occurred错误

    原因是我nginx中conf文件的配置里面 location中的 这一块内容是 #注释的那两行 所以报错出现这个错误. 后来将这两行注释掉,改成这两个就好了. root html; index ind ...

  5. 项目: ATM+购物车

    ATM+购物车 项目文件: 介绍 以下为文件夹层次和内容: readme.md 1. 需求 模拟银行取款 + 购物全过程 1.注册 2.登录 3.提现 4.还款 5.转账 6.查看余额 7.查看购物车 ...

  6. Android 功耗测试

    <head> <title>Evernote Export</title> <basefont face="微软雅黑" size=&quo ...

  7. centos7 netstat command not found

    只需要执行: yum install net-tools 就ok.

  8. ExceptionLess的安装、配置、使用

    前言 Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,ASP.NET Core,Web API,Web Forms,WPF,Console,ASP.NET ...

  9. 沙漠世界1.0 c++小游戏

    #include<bits/stdc++.h> #include<time.h> #include<windows.h> #include<stdlib.h& ...

  10. 7.5 The Morning after Halloween

    本题主要是存储的问题,在存储上笔者原先的代码占用了大量的内存空间 这边笔者采用暴力的思想直接硬开所有情况的16^6的数组来存储该问题,当然这在时间上是十分浪费的,因为初始化实在太慢了,剩下的就是状态转 ...