mysql中索引

一、概述

1、What?

 索引是对数据库表中一列或多列的值进行排序的的一种结构,可以提高数据库中特定的数据查询速度。

 索引时一个单独存储在磁盘上的数据库结构,包括对数据表里面的所有记录的引用指针。

 索引时在存储引擎中实现的,每种存储引擎的索引都不一定相同,也不一定支持所有索引类型,msyql中索引存储类型有两种:btree、hash,具体和表的存储引擎相关的:myisam、InnoDB。

2、Why?

 优点:

 1.通过创建唯一索引,可以保证数据库表中的每行数据的唯一性,提高数据的查询速度;

 2.加快数据库表语表之间的的连接;

 3.使用分组和排序子句进行数据查询时,减少查询中分组和排序的时间。

 缺点:

 1.创建索引和维护索引要耗费时间,随着数据量的增加所耗费的的时间也增加;

 2.索引需要占磁盘空间,每一个索引占一定的物理空间,如果有大量索引,索引文件可能比数据文件更快达到最大文件尺寸;

 3.对表中的数据进行增加、删除、修改时,索引需要动态维护,降低数据的维护速度。

二、索引分类


1.创建普通索引与单例索引,使用idnex关键字

alter table 表名 add index 索引名(表中索引的字段名);
alter table t_user add index user_name(t_name);
2.创建唯一索引,使用unique关键字

alter table 表名 add unique 索引名(表中索引的字段名);
alter table t_user add unique user_id(t_id);
3.创建组合索引,使用index关键字
alter table 表名 add index 索引名(字段1,t_字段2);
alter table t_user add index list_count(t_password,t_regtime);
4.创建全文索引,使用fulltext关键字

alter table 表名 add fulltext 索引名(表中要索引的字段名);
注:由于fulltext创建全文索引只要MyISAM存储支持,需要更改mysql存储引擎。全文索引适合大型数据集。

5.创建空间索引,使用spatidx关键字

alter table 表名 add spatidx 索引名(表中要索引的字段名);
注:由于spatidx创建全文索引只要MyISAM存储支持,需要更改mysql存储引擎。

三、索引操作

1.查询索引

例1:

show index from t_user;

Non_unique:索引唯一性,1表示非唯一,0表示唯一索引;

Key_naem:索引名称;

Seq_in_index:字段在索引中的位置,单列索引该值为1,组合索引为每个字段在索引中的顺序;

Column_name:定义索引的列字段;

Sub_part:索引长度;

Null:表示该字段是否能为空值;

Index_type:表示索引类型;

例2:

show create table t_user;

例3:

explain select * from t_user;

2.删除索引

使用alter table语句删除索引:

alter table 表名 drop index 索引名称;

使用drop index语句删除索引:

drop index 索引名称 on 表名;

四、索引设计原则

1.避免对经常更新的表进行过多的索引,索引中列尽量可能少,对于经常查询的字段应该创建索引;

2.数据量小的表最好不要用索引;

3.索引不是越多越好,表中如有大量的索引,不仅占用磁盘空间,也会影响instead、delete、update语句性能,因为表中的数据更改的同时,索引也会进行调整和更新。

4.数据本身具有唯一性特征时,指定唯一索引,使用唯一索引确保定义的列的数据完整性,以提高查询速度;

5、频繁进行排序和分组的列上创建索引,如果待排序的列上有多个,可在这些列上建立组合索引

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/142817.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

mysql 之索引

什么是索引: 索引是一种高效获取数据的 存储结构,一般包含了 hash 二叉树 红黑树。 但是mysql中索引一般使用的是B树 准确说是使用的B树构建的索引:若仅仅是进行select * from table where id 1,用上述的三种方法都会很轻松的实…

Mysql__索引

1)索引问题----组合索引 最左前缀匹配原则 在mysql建立联合索引时会遵循最左前缀匹配的原则,即最左优先,在检索数据时从联合索引的最左边开始匹配 ALTER TABLE index ADD INDEX test_AA_BB_CC_DD (AA,BB,CC,DD);SHOW INDEX FROM index;EXPLAIN SELECT …

【Mysql 索引】

索引的基本知识 1. 索引介绍 索引的出现就是为了提高数据检索效率,就跟书的目录一样。索引不但在内存中,还写在硬盘中。索引是存储引擎实现的。 2. 索引常见模型 搜索树: 每个节点左儿子小于父节点,父节点小于右节点. select/update 复杂…

Mysql、索引

索引 数据库中的查询操作非常普遍,索引就是提升查找速度的一种手段 索引的类型 从数据结构角度分 1.B索引:传统意义上的索引,最常用最普遍的索引2.hash索引:hash索引是一种自适应的索引,数据库会根据表的使用情况自动生…

MySQL—索引

索引是什么? 索引是一种特殊的文件,它们包含着对数据表里所有记录的引用指针。 索引是一种数据结构,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据表中的数据。通俗来说,索引相当与目录&#xff0c…

MySQL的索引有哪些

一、索引是什么# 索引,在MySQL中也叫“键(key)”,是存储引擎用于快速找到记录的一种数据结构。如果把数据库的一张表比作一本书,那索引则是这本书的目录,通过目录,我们能快速找到我们想要的主题…

mysql 的 索引

「深度学习福利」大神带你进阶工程师,立即查看>>> 1 什么是索引? 索引是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。 索引的实现 通常使用B树及其变种B树。 索引相当于字典的目录,作用…

Mysql高性能索引

一、索引是什么 二、索引的底层实现原理 三、InnoDB的存储结构是怎样的? 四、InnoDB索引和MyIsam索引对比 五、Mysql为什么会选错索引 六、唯一索引和普通索引的区别 导读:本博文讲解了索引是什么和索引的底层原理,提到了 BTREE和 BTREE hash底层…

MySQL:索引

一、索引的常见模型 索引的出现是为了提高数据查询的效率。实现索引的方式有很多种,比较常见的数据结构有:哈希表、有序数组和搜索树。 索引是在存储引擎层实现的,不同存储引擎索引工作方式不同。 1.1 哈希表 哈希表:键值存储…

【MySQL】MySQL的索引

目录 索引1.1 概念1.2 作用1.3 使用场景1.4 使用1.5 索引最常用的数据结构 索引 1.1 概念 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引, 并指定索引的类型,各类索引有各自的数据结构实现。 …

MySQL 的索引

文章目录 索引简介普通索引主键索引唯一索引全文索引外键索引复合索引复合索引生效的几种方式复合索引会失效的情况 索引的优点高性能的索引策略独立的列前缀索引和索引的选择性复合索引选择合适的索引列顺序聚簇索引索引的 Btree 结构聚簇索引和非聚簇索引的区别聚簇索引的优点…

什么是 MySQL 索引?

什么是索引? 假设我们有一张数据表 employee(员工表),该表有三个字段(列),分别是name、age 和address。假设表employee有上万行数据(这公司还真大),现在需要从这个表中查找出所有名字是‘ZhangSan’的雇员信…

MySql知识体系总结(2021版)

存储引擎负责在MySQL中存储数据、提取数据、开启一个事务等等。存储引擎通过API与上层进行通信,这些API屏蔽了不同存储引擎之间的差异,使得这些差异对上层查询过程透明。存储引擎不会去解析SQL。 二、对比InnoDB与MyISAM 1、 存储结构 MyISAM&#xff…

一文搞懂MySQL索引所有知识点(建议收藏)

Mysql索引 索引介绍 索引是什么 官方介绍索引是帮助MySQL高效获取数据的数据结构。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。 一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往是存储…

Doris安装

Apache Doris 由百度大数据部研发(之前叫百度 Palo,2018 年贡献到 Apache 社区后, 更名为 Doris ),在百度内部,有超过 200 个产品线在使用,部署机器超过 1000 台,单一 业务最大可达…

深入理解hashmap底层实现原理

目录 总体介绍 HashMap元素的存储 在hashmap中添加元素 HashMap的扩容机制 HashMap的线程安全性 1.添加和删除元素时存在不安全性 2.进行扩容操作时存在不安全性 3.哈希冲突存在不安全性 4.线程之间的不可见性导致安全问题 总体介绍 HashMap是我们用于元素映射使用频率最…

RK3588平台开发系列讲解(项目篇)YOLOv5部署测试

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、YOLOv5环境安装二、YOLOv5简单使用2.1、获取预训练权重文2.2、YOLOv5简单测试2.3、转换为rknn模型2.4、部署到 RK 板卡三、airockchip/yolov5简单测试3.1、转换成rknn模型并部署到板卡沉淀、分享、成长,让自己和他…

HTML编码问题导致的乱码

今天一个学弟问了一个问题&#xff0c;它写的HTML代码打开显示的是乱码。 然后就给我发来了代码。 就一个HTML文件和一个文件夹&#xff0c;打开一看&#xff0c;很简单的代码。 <!DOCTYPE html> <html lang""> <head><meta charset"UTF…

URL和HTML编码

URL和HTML编码 在呈现HTML页面时,有时候需要显示一些特殊的字符,例如”<”和”&”,因为它们是HTML专用字符,因此需要一些技巧.例如要想显示AT&T,在代码中必须写成AT&amp;T。同样URL中的,&,/等字符也为专用字符,所以如果需要在URL参数中使用它们,也必须对这些…

简单的Html编码转换工具

一、前言 因为项目经常会碰Html转码&#xff0c;特别是返回的xml报文&#xff0c;总是显示&# 十六进制的编码&#xff0c;查中文的时候特别不方便&#xff0c;所以就做了一个简单的C#桌面应用程序。 二、涉及软件 Visual Studio 2019 Preview 三、使用框架 .NET Fram…