MySql——索引

索引概述

介绍

        索引(index)是帮助MySql高效获取数据的数据结构(有序),在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

优点

1.提高数据检索的效率,降低数据库的IO成本缺点

2.通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗

缺点:

1.索引列也是要占用空间的

2.索引大大提高了查询效率,同时却也降低更新表的速度,如对表进行INSERT、UPDATEDELETE时,效率降低

索引结构

二叉树

特点:顺序插入时会形成一个链表,查询性能大大降低

           大量数据时,层级较深,检索速度慢

B-Tree(多叉路衡查找树)

最大度数为n时,那么这颗B树每个节点最多存储n-1个key值

B+Tree

概述:B+Tree是B-Tree的变种

特点:所有数据都会出现在叶子节点中

          叶子节点形成一个单向链表

          非叶子节点仅仅起到索引数据作用,具体的数据都是在叶子节点存放的

Hash

概述:哈希索引就是采用一定的hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储在hash表中。

特点:

1.Hash 索引只能用于对等比较 (= in) ,不支持范围查询( between > < ...
2.无法利用索引完成排序操作
3.查询效率高,通常 ( 不存在 hash 冲突的情况 ) 只需要一次检索就可以了,效率通常要高于 B+tree 索引

索引分类

主键索引(primary):针对于表中主键创建的索引

特点:默认自动创建,只能有一个

唯一索引(unique):避免同一个表中某数据列中的值重复

特点:可以有多个

常规索引:快速定位特定索引

特点:可以有多个

全文索引(fulltext):全文索引查找的是文本中的关键词,而不是比较索引中的值

特点:可以有多个

聚集索引&二级索引

聚集索引:

含义:将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据

特点:必须有,而且只有一个

二级索引

含义:将数据与索引分开存储,索引结构的叶子节点关联的是对应的主键

特点:可以有多个

聚集索引选取规则:

如果存在主键,主键索引就是聚集索引。

如果不存在主键,将使用第一个唯一( UNIQUE )索引作为聚集索引。
如果表没有主键,或没有合适的唯一索引,则 InnoDB 会自动生成一个 rowid 作为隐藏的聚集索引。

索引语法

创建索引:

CREAT  [UNIQUE  |  FULLTEXT]  INDEX  index_name  ON  tavle_name  (index_col_name......);

查看索引:

SHOW  INDEX  FROM  talbe_name;

删除索引:

DROP  INDEX  index_name  ON  table_name;

索引SQL性能分析

SQL执行频率

MySQL 客户端连接成功后,通过 show [session|global] status 命令可以提供服务器状态信
息。通过如下指令,可以查看当前数据库的 INSERT UPDATE DELETE SELECT 的访问频次

慢查询日志

慢查询日志记录了所有执行时间超过指定参数( long_query_time ,单位:秒,默认 10 秒)的所有
SQL 语句的日志。
MySQL 的慢查询日志默认没有开启,我们可以查看一下系统变量 slow_query_log

profile

show profiles 能够在做 SQL 优化时帮助我们了解时间都耗费到哪里去了。通过 have_profiling参数,能够看到当前MySQL 是否支持 profile 操作

explain

EXPLAIN 或者 DESC 命令获取 MySQL 如何执行 SELECT 语句的信息,包括在 SELECT 语句执行
过程中表如何连接和连接的顺序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值