谈Mysql索引

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

myisam和innodb的索引有什么区别?

两个索引都是B+树索引,但是myisam的表存储和索引存储是分开的,索引存储中存放的是表的地址。而innodb表存储本身就是一个B+树,它是用主键来做B+树的key的。

因此innodb需要设置主键,如果没有的话,mysql会优先使用unique键做主键,如果没有unique的话,会生成一个隐含字段做主键。

innodb中的主键最好是要使用自增id,因为这样当进行插入操作的时候是不需要修改表的存储结构的。

innodb的辅助索引key是辅助索引,而value则是主键。那么这样的话,innodb中主键如果是md5之类的字符串的话,那么每个辅助索引的磁盘空间就占用很大,而且也有前一条的问题,当插入操作的时候还需要修改表结构。

覆盖索引

由于innodb的辅助索引带主键的机制就导致一种“覆盖索引”的使用。就是只需要在辅助索引中就可以进行到值查找而不需要进行查表。比如一个InnoDB表student字段有uid(主键),username,age。其中建立一个辅助索引username,那么如果你希望查找一个学生名为yejianfeng的学生是否存在:

select id from student where username=”yejianfeng”  (这个查询语句是使用到覆盖索引的,它只会去索引中进行一次查找,而不会查表,当然如果这个表是myisam表的话,就不会覆盖索引了)

select * from student where username=”yejianfeng”  (这个查询是使用不到覆盖索引的,它会去索引查找一次,然后根据主键id去表中再查找一次。所以说不要滥用*)

索引选择性

索引选择性是建立索引的参考指标,指的是该字段可选择的非重复项在总条数中占的比例。比如说一个表中有100000的条数,有个字段是性别字段,这个性别它只有两个选择,所以它的索引选择性就是2/100000 ~ 0.00002,那么这种情况下,我们就没必要再给这个字段单独加个索引。原因是当选择性太小的话,比如我进行一次查询查出来的100条中有50条是符合查询结果的,相比于选择性大的情况,我进行一次查询查出来的100条中只有5条是符合查询结果的,那么后一种建立索引让索引查询出来的结果变小的效果明显更大。而考虑到索引也占用资源以及增删操作的成本,选择性太小的字段就没有建立索引的必要了。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
8月前
|
存储 SQL 自然语言处理
深入理解MySQL索引
索引是帮助数据库快速查询数据的一种数据结构,在数据库中,数据库系统除了存储数据之外还维护着一种特殊的数据结构,这种数据结构以某种方式指向数据,这样就可以在这种数据结构上实现高级算法来查询数据,这种数据结构就是索引。
100 0
|
4月前
|
存储 SQL 关系型数据库
mysql索引详解
mysql索引详解
51 0
mysql索引详解
|
8月前
|
SQL 存储 算法
Mysql索引来了解一下(超详细)
Mysql索引来了解一下(超详细)
86 0
|
10月前
|
存储 关系型数据库 MySQL
Mysql索引
Mysql索引
52 0
|
10月前
|
存储 关系型数据库 MySQL
详解MySQL索引
1.什么是索引 当我们想在一本书里面找到具体的章节的时候,最快的办法是去查看这本书的目录,索引就类似于数据库中存储的数据的目录,是一种用于快速查找到数据的数据结构,这个数据结构里面存储的是指向数据存储位置的指针。 使用索引之后,除了数据本身之外,还要存一份索引,用了更多的存储空间,是标准的用空间换时间的做法。
75 0
|
10月前
|
存储 SQL 关系型数据库
初识MySQL索引
初识MySQL索引
65 0
|
存储 关系型数据库 MySQL
MySQL索引详解,这一篇绝对够 上
MySQL索引详解,这一篇绝对够 上
131 0
|
存储 关系型数据库 MySQL
MySQL索引详解,这一篇绝对够 下
MySQL索引详解,这一篇绝对够 下
104 0
MySQL索引详解,这一篇绝对够  下
|
关系型数据库 MySQL 数据库
MySQL索引详解,这一篇绝对够 中
MySQL索引详解,这一篇绝对够 中
111 0
MySQL索引详解,这一篇绝对够  中
|
存储 SQL 关系型数据库
MySQL索引理解
MySQL索引理解
MySQL索引理解

热门文章

最新文章