一.索引介绍

1.什么是索引?

索引由如字典,目的就是为了更快寻找到要找的内容。

令搜索查询的数据更有目的性,从而提高数据检索的能力

2.索引类型介绍

1.BTREE: B+树索引

2.HASH: HASH 索引

3.FULLTEXT: 全文索引

4.RTREE:R树索引

一般人不用懂上面4种算法!!!!!讲起来太特么麻烦了!!!!

简单介绍下hash索引一般就是查url的,网址一般都很长,查询则会变得十分麻烦,而hash则是令这一段url定义为一个hash值指向url,查找就是查这个hash值。

全文索引则是从非结构化中提取信息,从而使其变得有结构起来,如同字典一般。

R树索引,不讲,懂就懂了,靠悟性

主要讲解一下B+tree算法

二.索引管理

1.特点

1.索引建立在表的列上(字段)

2.在where后面的列建立索引才会加快查询速度

3.pages<---索引(属性)<---查数据。

2.索引分类

1.主键索引:数据不能重复,不能为空

2.普通索引

3.唯一索引:可以为空

3.添加索引

1.创建索引

alter table test add index index_name(name);

另外一种方法

create index index_name on test(name);

2.查看索引

desc table;

另外。。。

show index from table;

3.删除索引

alter table test drop key index_name;

4.添加唯一性索引

alter table student add unique key uni_name(name);

4.前缀索引

1.根据字段的前N个字符建立索引,数据库数据太长,选择前几天作为索引,加快效率

alter table test add index idx_name(name());

2.优点

避免对大列建立索引,如果有大列的数据,就使用前缀索引

5.联合索引

alter table people add index  idx_gam(a,b,c);

当你查询为abc,则查询走索引,查询为ab,部分走索引,查询a也部分走索引,但不以a开头,如bc,b,c都不走索引,但是b,a则部分走索引

6.explain详解

1.使用方法

mysql> explain select name,countrycode from city where id=;

2.全表查询(在explain语句结果中的type为all)

当出现全表扫描:

  1)业务确实要获取所有的数据

  2)不走索引导致的全表扫描(没有索引,索引有问题,sql语句有问题)

  生产中能避免避免,效率极差

3.索引扫描

索引至少到达range级别,性能从上倒下,由差到好

  index

  range

  ref

  eq_ref

  const

  system

  null

4.index和all区别是all不走索引,而index则遍历索引树

5.range,索引范围查询,where里拥有>,<等条件,搜索的行数超过总的25%则为all

6.eq_ref ,类似ref,区别在于使用的索引是唯一索引,对于每个索引兼值,表中只有一条记录匹配,简单来说,就是多表连接中使用primary key 或者unique key 作为关联条件

7.const,system,实际上差距不大,所以合到一处。当mysql对查询部分进行优化,转化为一个常量,使用这类访问时,如将主键置于where列表中,mysql就能将该查询转化为一个常量

8.NULL,就是数据空中找不到该数据,没有,因为没有所以最快

7.一些问题

  Using temporary

  Using filesort  (使用了默认的文件排序,如果使用了索引,会避免这类排序)

  Using join buffer

如果出现Using filesort检查order by ,group by, distinct, join 条件列上应该是没有索引,当order by语句中出现Using filesort,那就尽量让排序值在where条件中出现,key_len越小越好,rows越小越好

mysql> explain select * from city where population> order by population;

MySQL学习【第七篇索引管理及执行计划】的更多相关文章

  1. MySQL Index--关联条件列索引缺失导致执行计划性能不佳

    某系统反馈慢SQL影响生产,查看SLOW LOG发现下面慢SQL: SELECT COUNT(DISTINCT m.batch_no) FROM ob_relation r INNER JOIN ob ...

  2. MySQL 索引管理与执行计划

    1.1 索引的介绍 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息.如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息. ...

  3. 第六章· MySQL索引管理及执行计划

    一.索引介绍 1.什么是索引 1)索引就好比一本书的目录,它能让你更快的找到自己想要的内容. 2)让获取的数据更有目的性,从而提高数据库检索数据的性能. 2.索引类型介绍 1)BTREE:B+树索引 ...

  4. MySQL学习(七) 索引选择(半原创)

    概述 该篇文章主要阐述一个例子(例子来自参考资料,侵删),然后总结今天相关的知识点. 例子 (例子来自参考文章,非原创) 创建表并插入数据,并执行查询 CREATE TABLE `t` ( `id` ...

  5. mysql学习(七)-索引学习

    常规索引: 在常用查询的字段上使用常规索引 创建表时一块创建索引 create table if not exists carshop(id int not null auto_increment, ...

  6. MySQL索引管理及执行计划

    一.索引介绍 二.explain详解 三.建立索引的原则(规范)

  7. 数据库MySQL学习笔记高级篇

    数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...

  8. Git 学习(七)标签管理

    Git 学习(七)标签管理 发布版本时,通常会先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本.取出某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一个快照. ...

  9. MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划

    这篇文章主要介绍了MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划的相关资料,需要的朋友可以参考下 一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存 ...

随机推荐

  1. 软工读书笔记 week4 ——《黑客与画家》下

    因为时间有限,只对书中后半部分几个篇章进行了阅读.        一.另一条路       作者以他自己为例,在那个没人知道什么叫“软件运行在服务器时”的时代,他和朋友选择创业时,没有选择写传统的桌面 ...

  2. centos安装flash

    自己操作步骤: 1  :http://get.adobe.com/cn/flashplayer/ 还是进入此下载页选择“.rpm,适用于其它Linux”,下载该rpm文件 2   :# rpm -iv ...

  3. 巧用花生壳将局域网内的FTP和www服务器发布到互联网

    一.目的:用生壳发布FTP和mail服务器到互连网. 二.网络环境:(出租房多家共用路由器上网,ADSL的1Mbps带宽,动态PPPOE拨号,帐号和密码存储在soho路由器中,路由器自动联机上网,并为 ...

  4. [翻译] IQAudioRecorderController

    IQAudioRecorderController IQAudioRecorderController is a drop-in universal library allows to record ...

  5. 计算Pan手势到指定点的角度

    计算Pan手势到指定点的角度 效果图: 源码: // // RootViewController.m // Circle // // Copyright (c) 2014年 Y.X. All righ ...

  6. 软件磁盘阵列 (Software RAID)

    什么是 RAID 磁盘阵列全名是『 Redundant Arrays of Inexpensive Disks, RAID 』,容错式廉价磁盘阵列. RAID 可以通过一些技术(软件或硬件),将多个较 ...

  7. 编写VBA宏生成页面

    概述 依据详细设计中表设计,借用excel宏编写VBA生成页面. 特色 高定制.高效率.兼容所有生成要求.不依赖低耦合.任意Sheet适用 缺陷 不支持批量Sheet页生成 VBA源码 Sub lis ...

  8. 求最长公共子串 Longest Common Subsequence

    最长公共子串 // Longest Common Subsequence 子串有别于子序列, 子串是连续的, 而子序列可以不连续 /*--------------------------------- ...

  9. yaml 入手

    一.变量 YAML使用冒号加缩进的方式代表层级(属性)关系,使用短横杠(-)代表数组元素. YAML中允许表示三种格式,分别是常量值,对象和数组 #即表示url属性值: url: http://www ...

  10. SQL Server系统常用存储过程

    SQL Server系统存储过程也是好几百个,算了,还是写几个常用的. 1.sp_help 查询表的信息 执行存储过程: sp_help Person 显示结果如下: 妈了个B,有了这张图,你还不懂怎 ...