Linux之Mysql索引和优化

一、MySQL 索引

索引作为一种数据结构,其用途是用于提升数据的检索效率。

1、索引分类

- 普通索引(INDEX):索引列值可重复
- 唯一索引(UNIQUE):索引列值必须唯一,可以为NULL
- 主键索引(PRIMARY KEY):索引列值必须唯一,不能为NULL,一个表只能有一个主键索引
- 全文索引(FULL TEXT):给每个字段创建索引

2、创建索引

1、普通索引(INDEX)
(1)在创建表时指定
mysql> create table student1(id int not null, name varchar(100) not null,birthdy date, sex char(1) not null, index nameindex (name(50)));​
(2)基于表结构创建
mysql> CREATE INDEX nameindex on student1(name(50));
(3)修改表结构创建​
mysql> ALTER TABLE student1 ADD INDEX nameIndex(name(50));
2、唯一索引(UNIQUE INDEX)(语法同普通索引)
(1)在创建表时指定 
CREATE TABLE table_name (column1 datatype,column2 datatype,...UNIQUE INDEX index_name (column1, column2, ...));
(2)基于表结构创建(基于已存在的表) 
CREATE UNIQUE INDEX index_name ON table_name(column1, column2, ...);
(3)修改表结构创建​ 
ALTER TABLE table_name ADD UNIQUE INDEX index_name(column1, column2, ...);
3、全文索引(FULLTEXT INDEX)((语法同普通索引))
(1)在创建表时指定
CREATE TABLE table_name (column1 datatype,column2 datatype,...FULLTEXT INDEX index_name (column1, column2, ...));
(2)基于表结构创建
CREATE FULLTEXT INDEX index_name ON table_name(column1, column2, ...);
(3)修改表结构创建​
ALTER TABLE table_name ADD FULLTEXT INDEX index_name(column1, column2, ...);

3、删除索引

删除索引需要相应的权限,通常是ALTER权限。

mysql> DROP INDEX index_name ON table_name; ​         ​​​​​​​# 直接删除 
mysql> ALTER TABLE table_name DROP INDEX index_name; # 修改表结构删除 

4、查看索引

(1)查看表的索引,返回一个结果集,包含表的所有索引信息,包括索引名称、索引类型、索引的列名等
mysql> SHOW INDEX FROM table_name;
(2)查看表的创建语句,返回表的创建语句,其中包含索引的定义
mysql> SHOW CREATE TABLE table_name;
(3)使用INFORMATION_SCHEMA.STATISTICS表查看表的索引信息,返回包含表的索引信息的结果集,包括索引名称、索引类型、索引的列名等。
mysql> SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = 'database_name' AND TABLE_NAME = 'table_name';

面试题

index(key)每张表可以有很多列做index,必须对索引起名。

导致SQL执行慢的原因(出现慢查询 

1.硬件问题。如网络速度慢,内存不足,I/O吞吐量小(I/O负载大),磁盘空间满了等。
2.没有索引或者索引失效.
3.数据过多
​
#索引:当查询出现速度过慢可以通过建立优化查询速度,可以当作调优

索引失效的原因

1.数据类型不匹配:如果查询中使用了索引列但数据类型不匹配,MySQL将无法有效使用索引。例如,将字符串类型的列与数值类型进行比较,或将日期类型的列与文本进行比较
2.数据更新频繁:索引是为了提高查询性能而创建的,但在数据更新频繁的情况下,索引会
导致插入、更新和删除操作的性能下降
3.索引中断、模糊查询​​​​​​

binlog日志的格式

查看binlog日志的格式

mysql> show variables like "%binlog_format%"; 

三种格式 

默认格式:在mysql5.7.7之前,默认格式是statement,5.7.7之后是row格式。
binlog日志有三种模式:
1.Row Level(行模式)
日志中会记录每一行被修改的数据,然后在slave端再对相同的数据进行修改
优点:在row 

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

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

相关文章

spring security如何适配盐存在数据库中的密码

19.token认证过滤器代码实现_哔哩哔哩_bilibili19.token认证过滤器代码实现是SpringSecurity框架教程-Spring SecurityJWT实现项目级前端分离认证授权-挑战黑马&尚硅谷的第20集视频,该合集共计41集,视频收藏或关注UP主,及时了解更多相关视…

C#类型基础Part1-值类型与引用类型

C#类型基础Part1-值类型与引用类型 参考资料前言值类型引用类型装箱和拆箱 参考资料 《.NET之美–.NET关键技术深入与解析》 前言 C#中的类型一共分为两类,一类是值类型(Value Type),一类是引用类型(Reference Type&#xff09…

Java集合的重点

一、Java集合 Java集合包含一组接口和实现类,底层使用不同类型的数据结构,提供不同特点的存储方式,主要分为两大类: Collection单列集合和Map键值对集合。 1.Collection接口用于表示单例集合,主要包括三个子接口&am…

24年支付行业概况与未来

​ 一、行业背景介绍 支付行业作为现代金融体系的基石,正经历着前所未有的变革。随着科技的发展和人们对便捷支付方式的需求不断提高,支付行业在近年来得到了迅猛发展。在我国,支付行业经过多年的发展和市场竞争,已经形成了多元化…

为什么 Vue Router 的 History 模式和 React Router 的 Browser 模式需要服务器支持?

Vue Router 的 history 模式和 React Router 的 Browser 模式使用的是 HTML5 的 History API,它允许你修改浏览器地址栏的 URL 而不发送请求到服务器。这种方式可以创建干净的 URL,没有 # 符号,看起来就像传统的服务器端路由。 然而&#xf…

Navicat 17 新特性 | Navicat BI 功能革新升级,助力企业深度挖掘数据潜能

随着 Navicat 17 的发布,在业界引起了广泛的共鸣与热议。我们曾深入剖析其众多革新特性,包括模型设计创新与优化、高效的查询与配置、用户界面交互体验再升级,原生适配国产平台和操作系统和数据字典提升数据结构清晰度,这些新特性…

【第12章】Spring Cloud之集成 Spring Cloud Gateway

文章目录 前言一、新建项目1. 项目结构2. 引入依赖3. 启动类4. 基本配置 二、新建配置三、新建服务1. 提供者2. 消费者 四、单元测试1. 启动网关服务2. 提供者3. 消费者 总结 前言 Spring Cloud Gateway是一个基于Spring Framework 5、Spring Boot 2和Project Reactor等技术构…

python的csv库常用操作

csv 模块是 Python 标准库中的一个模块,用于处理 CSV(逗号分隔值)文件。它提供了简单易用的功能来读取和写入 CSV 文件。以下是一些常用的操作: 一、读取 CSV 文件 新建文件data.csv,内容如下: 使用 csv.…

浪潮自研交换机系列常见问题处理

CN61108PC-V-H 不能PING通任何地址,也不能被PING 输入ip traceroute enable既可。注意视图 交换机通过console口远程登录至其他交换机,掉线后console口无法使用 例如有2台交换机A和B,在A交换机上插上console线登录后,在A通过SSH…

nodejs安装及环境配置建材商城管理系统App

✌网站介绍:✌10年项目辅导经验、专注于计算机技术领域学生项目实战辅导。 ✌服务范围:Java(SpringBoo/SSM)、Python、PHP、Nodejs、爬虫、数据可视化、小程序、安卓app、大数据等设计与开发。 ✌服务内容:免费功能设计、免费提供开题答辩P…

如何应对Android面试官 -> 常用数据结构如何进行优化

前言 本章我们开始讲解性能优化相关的话题,首先我们来看下数据结构如何优化: 性能优化 性能优化的本质:线上 APM 的性能监控,而性能监控通常是以下技术点 ByteCode、Hook(PLT Hook)、JS注入(采…

tslib 库-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

tslib 库 tslib 简介 tslib 库,这是 Linux 系统下,专门为触摸屏开发的应用层函数库,开源 功能与作用:作为触摸屏驱动和应用层之间的适配层,封装了读取和解析触摸屏数据的复杂过程,提供API接口 数据处理&…

MyBatis 插件机制、分页插件如何实现的

MyBatis 插件机制允许开发者在 SQL 执行的各个阶段(如预处理、执行、结果处理等)中插入自定义逻辑,从而实现对 MyBatis 行为的扩展和增强。以下是 MyBatis 插件运行原理的详细介绍: 插件接口 MyBatis 插件通过实现 org.apache.i…

c++ 高精度加法(只支持正整数)

再给大家带来一篇高精度,不过这次是高精度加法!话不多说,开整! 声明 与之前那篇文章一样,如果看起来费劲可以结合总代码来看 定义 由于加法进位最多进1位,所以我们的结果ans[]的长度定义为两个加数中最…

零基础学SpringBoot(一)--初识SpringBoot

1. SpringBoot简介 SpringBoot 是Spring家族中的一个全新的框架,它用来简化Spring应用程序的创建和开发过程,也可以说Spring Boot能简化我们之前采用SSM(SpringMVC Spring MyBatis)框架进行开发的过程。 以前我们采用SSM框架进行开发的时候&#xff0c…

vue3前端开发-小兔鲜项目-二级分类页面无限加载的实现

vue3前端开发-小兔鲜项目-二级分类页面无限加载的实现!实际的项目开发中,经常会遇到这需求。产品内容庞大,但是用户不可能一次性全部都加载请求的。当客户向下滚动,触碰到插件的底部时,会再次申请下一页内容。这样就会…

Adobe国际认证详解-动漫制作专业就业方向和前景

动漫制作专业的就业方向和前景随着创意产业的蓬勃发展而愈发广阔。这一专业涵盖了从角色设计、场景绘制到动画制作、特效合成等多个环节,是创意与技术相结合的典型代表。随着数字媒体和互联网的普及,动漫制作专业人才的需求正不断增长,为该专…

2024 杭电多校第一场

目录 目录 树 博弈 传送 树 给一棵根为 1 的有根树,点 i 具有一个权值 Ai 。 定义一个点对的值 f(u,v)max(Au,Av)|Au−Av| 。 你需要对于每个节点 i ,计算 ansi∑u∈subtree(i),v∈subtree(i)f(u,v) ,其中 subtree(i) 表示 i 的子树。 请…

Hadoop中HDFS、Hive 和 HBase三者之间的关系

HDFS(Hadoop Distributed File System)、Hive 和 HBase 是 Hadoop 生态系统中三个重要的组件,它们各自解决了大数据存储和处理的不同层面的问题。我们用大白话来解释这三个组件之间的关系: HDFS - 数据的仓库: HDFS 是…

Vscode离线下载对应版本的ms-python.vsix

一、查看vscode的版本号和发行时间 vscode界面中Help-About查看版本号和发行时间,ms-python的发行时间需要和这个时间相近: 二、在github仓库中查看ms-python有什么版本,以及发行时间 github仓库路径 https://github.com/microsoft/vsco…