mysql之索引

一、索引的概念

1、索引:是一个排序的列表,列表当中存储的是索引的值和包含之值的数据所在行的物理地址

2、主要作用:快速查找,加快查询速度

3、索引的缺点:索引也占用额外的磁盘

(1)innodb表数据文件本身也是索引,myisam:索引和数据文件是分离的
(2)更新一个包含索引的表,要比更新一个没有索引的表花费的时间更多,更新了值,也就更新索引

二、索引的作用

1、利用索引,数据库可以快速定位,大大加快查询速度(主要作用)
2、表的数据很多,查询需要关联多个表,这个时候索引也可以提高查询速度
3、加快表与表之间的连接速度
4、使用分组和排序时,可以大大减少时间
5、可以提高数据库恢复数据时的速度

三、索引创建的原则

1、若有索引,数据会先进行索引查询,然后定位数据,索引使用不当,反而会增加数据库的负担
2、主键、外键必须有索引(创建好主键和外键自动就有索引,不需要额外声明)
3、若一个表超过了300行记录,必须要有索引,否则数据库会遍历表的所有数据
4、互相之间有关联的表,在这个关联字段应该设置索引
5、经常被where条件匹配的字段,尤其是表数据比较多的,需要创建索引
6、经常进行group by(分组)、order by(排序)的字段,需要创建索引
7、唯一性太差的字段,不适合创建索引
8、更新太频繁的字段,不适合创建索引
9、索引列的字段越小越好长文本的字段不适合建立索引

四、创建表的时候需要考虑的因素

1、关联程度,3张表,选好关联字段

2、每个字段的长度也要考虑

3、设计合理的索引列

4、表数据,要控制在合理的范围之内。可以在牺牲一定性能的条件下满足需求(5秒以上要考虑优化,10秒以上一般是出现问题(缓存失效、缓存失效;缓存雪崩))

五、索引的类型

1、常用类型:B-树索引(BTREE)

(1)树形结构的索引,也是大部分数据库的默认索引类型
(2)根节点:树的最顶端的分支节点
(3)分支节点:指向索引里其他的分支节点,也可以是叶子节点
(4)叶子结点:直接指向表里的数据行

(5)mysql的默认引擎:INNODB,默认的索引类型就是Btree(INNODB——Btree)

查看索引:show index from test;

2、hash索引:散列索引(一般不用)

(1)把任意长度的输入,通过散列算法变成固定长度的输出
(2)散列值:分别对应数据里的列和行
(3)先算散列值,然后再对应,速度比Btree慢
(4)hash的索引匹配:= in () <= >=

(5)memory引擎可以支持hash,也是他的默认索引(memory——hash)

3、修改引擎类型

(1)alter table test engine=memory;

(2)alter table test engine=INNODB;

4、创建索引

(1)create index name_index on test (name(length));(name可自定义)
(2)create index name_index on test (name);(name可自定义)
(3)创建btree类型的索引:
create index idx_Btree_column on table2 (address) USING btree;
(4)创建hash类型的索引:
create index idx_hash_column on table2 (address) USING hash;

5、删除索引

(1)drop index notes_index on test;

六、创建的索引类型

(一)普通索引

(二)唯一索引(与unique相关联)

1、与普通索引类似,唯一索引的每一个值都是唯一的,唯一索引允许空值
2、添加唯一键才会创建唯一索引(最好不要为空)
3、一般是:unique not null
4、唯一索引的值不能重复
5、能在创建表时创建好条件,尽量在创建时把条件约束好,不要创完之后再添加

(三)主键索引

1、创建表的时候指定的主键就是索引,添加主键自动就是主键索引
2、主键:值唯一,一个表只有一个主键,不允许有空值,创建主键自动创建主键索引

(四)全文索引(text)

1、全文索引:适合在进行模糊查询时使用,可以在一篇文章中检索文本信息

2、模糊查询
explain加在查询语句前面,可以查看索引的使用情况

(五)联合索引

1、联合索引:指定一个索引名,一个索引名对应多个列名

七、索引失效(创建索引,使用时不一定会生效)

1、联合索引

(1)联合索引:查询时必须按照创建时的顺序来进行查询
(2)联合索引:必须从左到右侧开始,不能跳过索引,否则索引会失效
(3)mysql机制:默认会找最短的索引列(最优索引选择)

2、范围索引,可能会有一侧的索引失效

(1)如果索引是字符串,不加引号,索引会失效
(2)使用or语句,索引一定失效使用or作为条件,mysql无法同时使用多个索引
(3)使用is null 、is not null,有时候索引会失效。
where is null 数据的绝大多数都是空值,索引失效
where is not null 数据多数不为null,索引失效
(4)使用in或not in
in age 索引生效
not in age 索引失效

八、重点:一张表的查询速度是7.62s,你该如何解决?

1、先检查缓存,查看是否直接请求到后端数据库(缓存记录)

2、然后查看索引,请求的列值不是默认的索引,添加一下即可(EXPLAIN)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Stable Diffusion WebUI扩展openpose-editor如何使用

先上地址: GitHub - fkunn1326/openpose-editor: Openpose Editor for AUTOMATIC1111s stable-diffusion-webuiOpenpose Editor for AUTOMATIC1111s stable-diffusion-webui - GitHub - fkunn1326/openpose-editor: Openpose Editor for AUTOMATIC1111s stable-diffusion-webu…

[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务

目录 一、环境准备 1、工具准备 2、虚拟机环境 3、Docker 环境 二、项目准备 1、配置各个模块&#xff08;微服务&#xff09;的 Dockerfile 2、配置 docker-compose.yml 文件 3、Maven 打包 4、文件整合并传输 三、微服务部署 1、部署至 Docker 2、访问微服务 四…

nacos在linux中的安装、集群的配置、mysql生产配置

1.下载和安装 官方下载地址&#xff1a;https://github.com/alibaba/nacos/releases&#xff0c;根据自己需要的本版去下载就行 下载的是 .tar.gz 后缀的文件是linux版本的 使用tar命令解压&#xff0c;完成之后是一个nacos的文件夹 和windows下的文件夹目录是一样的 要启…

MICCAI2023论文多模态论文速读-1

文章目录 1.Attentive Deep Canonical Correlation Analysis for Diagnosing Alzheimer’s Disease Using Multimodal Imaging Genetics2.Bidirectional Mapping with Contrastive Learning on Multimodal Neuroimaging Data3.CoLa-Diff: Conditional Latent Diffusion Model f…

【算法练习Day35】01背包问题分割等和子集

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 01背包问题分割等和子集总结…

Proteus仿真--基于51单片机的按键控制LED仿真(仿真文件+程序)

本文主要介绍基于51单片机的按键控制LED仿真&#xff08;完整仿真源文件及代码见文末链接&#xff09; 本仿真文件主要涉及4个按键&#xff0c;其中&#xff1a; K1按键的逻辑是——逐个点亮 K2按键的逻辑是——上四个点亮 K3按键的逻辑是——下四个点亮 K4按键的逻辑是——关…

HarmonyOS鸿蒙原生应用开发设计- 元服务(原子化服务)图标

HarmonyOS设计文档中&#xff0c;为大家提供了独特的元服务图标&#xff0c;开发者可以根据需要直接引用。 开发者直接使用官方提供的元服务图标内容&#xff0c;既可以符合HarmonyOS原生应用的开发上架运营规范&#xff0c;又可以防止使用别人的元服务图标侵权意外情况等&…

Http代理与socks5代理有何区别?如何选择?(一)

了解SOCKS和HTTP代理之间的区别对于优化您的在线活动至关重要&#xff0c;无论您是技术娴熟的个人、现代互联网用户还是企业所有者。在使用代理IP时&#xff0c;您需要先了解这两种协议之间的不同。 一、了解HTTP代理 HTTP&#xff08;超文本传输协议&#xff09;代理专门设计…

【Java 进阶篇】Java中的响应输出字节数据

在Java Web应用程序开发中&#xff0c;处理响应是一个常见的任务。有时&#xff0c;您可能需要向客户端发送字节数据&#xff0c;而不仅仅是文本或HTML内容。这可以用于传输各种内容&#xff0c;如图像、文件、视频等。本文将详细介绍如何在Java中使用Response对象输出字节数据…

在 Typescript 项目中使用 cdn 加载的js插件没有类型声明

先上一段同事写得代码, 此处动态的插入了 MathJax 这个 js 插件, 我不知道为什么如此编写, //ts-ignore 此处不知道为什么如此调用, 只能使用 ts-ignore 忽略dynamicLoadingJs("//xxx.com/latex/MathJax.js?configTeX-AMS_HTML", () > {MathJax.Hub.Config({exte…

[Docker]四.Docker部署nodejs项目,部署Mysql,部署Redis,部署Mongodb

一.部署nodejs项目,映射端口,挂载数据卷 可以到https://hub.docker.com/去搜索node镜像,然后下载,也可以直接通过docker pull node下载镜像,然后用这个node镜像启动容器node,这样系统就集成了node服务了,在这里挂载www/node目录到容器中,并指定端口映射,运行nodejs程序,安装npm…

【机器学习合集】模型设计之残差网络 ->(个人学习记录笔记)

文章目录 模型设计之残差网络1. 什么是残差结构1.1 网络加深遇到的优化问题1.2 short connect技术 2. 残差网络及有效性理解2.1 残差网络 3. 残差网络的发展3.1 密集残差网络3.2 更宽的残差网络(wide resnet)3.3 分组残差网络3.4 Dual Path Network3.5 加权残差网络3.6 预激活残…

CSS3网页布局基础

CSS布局始于第2个版本&#xff0c;CSS 2.1把布局分为3种模型&#xff1a;常规流、浮动、绝对定位。CSS 3推出更多布局方案&#xff1a;多列布局、弹性盒、模板层、网格定位、网格层、浮动盒等。本章重点介绍CSS 2.1标准的3种布局模型&#xff0c;它们获得所有浏览器的全面、一致…

HTML表格

HTML表格&#xff1a; HTML表格是由<table>标签来定义。HTML表格式一种用于结构化数据的标记语言元素。每个表格均有若干行&#xff08;由<tr>B标签定义&#xff09;&#xff0c;每行被分割为做干列&#xff08;由<td>标签定义&#xff09;。表格可以包含标…

第22期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练 Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…

Java架构师知识产权与标准化

目录 1 导学2 知识产权概述3 保护期限4 知识产权人的确定4 侵权判断5 标准划分想学习架构师构建流程请跳转:Java架构师系统架构设计 1 导学 2 知识产权概述 知识产权是指公民、法人、非法人单位对自己的创造性智力成果和其他科技成果依法享有的民事权。是智力成果的创造人依…

Web渗透编程语言基础

Web渗透初学者JavaScript专栏汇总-CSDN博客 Web渗透Java初学者文章汇总-CSDN博客 一 Web渗透PHP语言基础 PHP 教程 | 菜鸟教程 (runoob.com) 一 PHP 语言的介绍 PHP是一种开源的服务器端脚本语言,它被广泛用于Web开发领域。PHP可以与HTML结合使用,创建动态网页。 PHP的特…

vue3中,使用html2canvas截图包含视频、图片、文字的区域

需求&#xff1a;将页面中指定区域进行截图&#xff0c;区域中包含了图片、文字、视频。 第一步&#xff0c;先安装 npm install html2canvas第二步&#xff0c;在页面引入&#xff1a; import html2canvas from html2canvas;第三步&#xff0c;页面使用&#xff1a; 1&…

【OpenCV实现图像:用Python生成图像特效,报错ValueError: too many values to unpack (expected 3)】

文章目录 概要读入图像改变单个通道黑白特效颜色反转将图像拆分成四个子部分 概要 Python是一种功能强大的编程语言&#xff0c;也是图像处理领域中常用的工具之一。通过使用Python的图像处理库&#xff08;例如Pillow、OpenCV等&#xff09;&#xff0c;开发者可以实现各种各…

纳米银线 纳米银纳米线 平均直径: 50-100nm

&#xff08;西&#xff09;纳米银线 &#xff08;安&#xff09;含量&#xff08;%&#xff09;&#xff1a;99.9 &#xff08;瑞&#xff09;平均直径: 50-100nm &#xff08;20nm 30nm 60nm &#xff09; &#xff08;禧&#xff09;长度&#xff1a;10um …