当前位置:首页 > 编程百科 > mysql索引是什么?基础理论讲解

mysql索引是什么?基础理论讲解

雨泽2年前 (2022-10-28)编程百科378

分享mysql数据库索引的基础理论知识讲解,数据库索引有什么作用?为什么在构建数据库的时候会用到mysql索引呢?是因为索引可以降低服务器资源消耗,加速数据查询效率,提高用户体验!

那么mysql数据库索引到底是什么?怎么创建数据库索引,删除索引,查看索引呢?雨泽将会给大家讲解,如果你对数据库索引不了解,可以继续往下阅读学习,希望可以帮到你。

MySQL索引基础理论讲解.jpg

一.索引分类:单列索引,唯一索引,复合索引

二.基本概念:索引是帮助mysql高效获取数据的数据结构。所以索引本质上就是一种数据结构,可以理解为排好序的快速查找的数据结构。

优势:可以高效检索数据,降低数据库的io和cpu消耗

劣势:更新表,还要更新索引,会降低更新表的速度

三.不适合建立索引的情况:

1,表数据太少

2,经常增删改的表

3,数据重复且分布平均的字段,比如性别

4,Where条件里用不到的字段

四.适合建立索引的情况:

1,频繁作为查询条件的字段

2,查询中与其他表关联的字段

3,查询中排序的字段,若排序的字段建有索引会大大提高排序速度

4,查询中统计或者分组的字段

五.索引使用:

创建

CREATE [UNIQUE] INDEX indexName ON tableName(字段名...);

ALTER TABLE tableName ADD [UNIQUE] INDEX indexName (字段名...);

删除

DROP INDEX indexName ON tableName;

查看

SHOW INDEX FROM tableName;

六:可以用explain 去分析查询语句

使用explain语句主要得出来的字段包括:

Id,查询标识

Select_type:select查询类型,主要区别于普通查询,联合查询,子查询等复杂查询。

Table:查询的那个表

Type:join类型,决定性能的指标,显示查询使用了哪种类型,最好到最差依次是:

system>const>eq_ref>ref>range>index>ALL

Const,只索引依次就找到了,用于primary key 或者unique索引

eq_ref 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描

Ref 非唯一性索引扫描,返回匹配某个单独值的所有行

range:只检索给定范围的行,使用一个索引来选择行

Index:Full IndexScan,index与ALL区别为index类型只遍历索引树

All:Full Table Scan,将遍历全表以找到匹配的行

备注:一般来说,得保证查询至少达到range级别,最好能达到ref

Using filesort:说明mysql会对数据使用一个外部的索引排序,MySQL中无法利用索引完成的排序操作称为“文件排序”

Using where:表明使用了where过滤

Using Index :表示索引覆盖(Covering Index),不会回表查询("覆盖索引扫描",表示查询在索引树中就可查找所需数据, 不用扫描表数据文件, 往往说明性能不错)

Using temporary: 使了用临时表保存中间结果,MySQL在对查询结果排序时使用临时表。常见于排序 order by 和分组查询 group by。

possible_keys: 此次查询中可能选用的索引显示可能应用在这张表中的索引,一个或多个。

key: 此次查询中确切使用到的索引

Key_len: 表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度

rows: 显示此查询一共扫描了多少行. 这个是一个估计值

extra: 包含不适合在其他列中显示但十分重要的额外信息

以上就是mysql数据库索引的基础理论详细介绍,希望可以帮到你,让你更好的了解mysql数据库索引的使用!

泽易云博客是一个专注编程技术开发以及手机副业赚钱项目的网站。

编辑:小编,文章部分内容整理网络!

版权声明:本文由泽易云博客发布,如需转载请注明出处。

免费手机副业:赏帮赚入口

本文链接:https://www.zeyiyun.com/42.html

标签: MySQL数据库

相关文章

如何配置Apache环境和实现Apache伪静态页面

如何配置Apache环境和实现Apache伪静态页面

分享一篇Apache服务环境配置和Apache伪静态操作命令的教程文章,希望可以帮助到大家。其实Linux系统的学习也是很简单的,有一套学习Linux的教程,可以快速上手Linux系统,并且应用到工作中。在日常上班编程开发工作中,搭建编程代码运行环境是每个程序员开发者必须都要会的技能,因为我们开发项...

PHP缓存技术原理分析

PHP缓存技术原理分析

分享有关于PHP缓存技术原理,网站为什么会用到缓存技术呢?是因为如果你的网站是大流量网站,每天都有很多用户去访问,那么你网站就需要用到PHP缓存技术了,缓存技术不但可以减轻服务器负担还可以加速访问速度!我们的网站基本都是使用数据库作为站点数据存储的容器。当你执行一个SQL查询时,处理过程一般是:首先...

前端开发和后端开发有什么区别?

前端开发和后端开发有什么区别?

分享前端开发和后端开发有什么不一样?需要学习的技术有哪些不同点?后端开发是对接数据库进行操作输出数据,保存数据,所谓数据库增删改查;前端开发是直接展示在网页上的效果,不过现在前端开发也是可以对接数据库了。那么前端开发与后端开发到底有什么区别呢?请带着这些问题继续往下看,雨泽将会给大家详细介绍,希望你...

Python发展历程介绍

Python发展历程介绍

分享Python编程语言的创始人以及Python编程语言的发展历程。最近几年比较火的一门编程语言就是Python编程语言了,它可以广泛应用到人工智能领域开发,大数据处理等等。Python编程语言为什么这么青睐呢?它到底有什么优势呢?雨泽将会给大家详细介绍Python编程语言的优缺点,发展历程以及这门...

Java是什么?Java发展前景怎么样?

Java是什么?Java发展前景怎么样?

分享Java是什么?Java编程语言是用来干什么的?Java的发展前景怎么样?Java是一门编程语言,Java用来开发软件,游戏,后台管理系统比较多。目前Java在编程语言排行榜上是名列前茅的,不可撼动的地位,所以学习Java是不需要担心发展前景,就目前的市场需求来看,Java的开发人员需求量还是非...

C语言怎么样?学习C语言可以做什么?

C语言怎么样?学习C语言可以做什么?

分享C语言怎么样?学习C语言可以做什么呢?相信很多新手都会有这样的问题,C语言是一门编程语言,现在有很多大学都会开设C入门课程作为编程入门课程,学习C语言可以做系统软件开发,游戏开发等等。现在市场对C语言开发程序员需求量还是非常大的,所以说,学习C语言也是一个不错的选择,当然,如果是自学,就需要花大...