MySQL record 07 part

ops/2024/9/24 9:42:37/

索引

这里是引用
注意,是排序,有序就会加快查找的速度。
在这里插入图片描述
优势:在这里插入图片描述
在这里插入图片描述
劣势

  1. 索引会单独占用存储空间
  2. 索引虽然可以提高排序和查找的速度,但同时也会降低更新、删除、新增数据的速度,因为MySQL此时既要更改表,也要维护更改表后对索引的调整。

所以,只有当进行查找操作的时候,建议使用索引,其他操作(比如更删改就不要使用索引了。
索引分类:
在这里插入图片描述
普通索引:
在这里插入图片描述
key就是键
唯一索引:
在这里插入图片描述
单列索引:
在这里插入图片描述
多列索引:
在这里插入图片描述
全文索引:
在这里插入图片描述
在这里插入图片描述


索引的创建

隐式,自动添加的索引这里是引用
显式,创建索引
在这里插入图片描述
在这里插入图片描述
显式创建普通索引在这里插入图片描述
在这里插入图片描述
性能分析语句可以查看是否使用了索引,
先看字段 book_name 有索引
EXPLAIN SELECT * FROM book WHERE book_name=‘some’;
在这里插入图片描述

结果中看到type是ref表示使用了索引,索引名字为idx_bname 再看字段 info 是没有索引的, EXPLAIN SELECT *
FROM book WHERE info=‘some’;
在这里插入图片描述
结果中看到type是all,表示没有使用索引,
显式创建唯一索引
在这里插入图片描述
在这里插入图片描述
显式创建主键索引
在这里插入图片描述
在这里插入图片描述
显式创建单列索引
在这里插入图片描述
在这里插入图片描述
显式创建多列索引
在这里插入图片描述
在这里插入图片描述
多列索引也叫联合索引,
使用性能分析语句查看是否使用的索引,
创建表语句包含的联合索引为:INDEX mul_bid_bname_info(book_id,book_name,info)
EXPLAIN SELECT * FROM book4 WHERE book_id=‘some’;
在这里插入图片描述
上图中可以看到type为ref表示使用了联合索引,
注意,只有当查询的字段是多列索引中定义的首字段的时候,才会使用多列索引,如果查询的字段不是多列索引定义的多个字段中的第一个字段,将不会使用多列索引,举例如下:
EXPLAIN SELECT * FROM book4 WHERE book_name=‘some’;
在这里插入图片描述
可以看到,本次性能查询语句中查询的字段不是多列索引显式定义时的首字段(book_id,book_name,info),即使book_name在多列索引定义中,但此时做的查询是不会使用多列索引的。
再举一个例子,
EXPLAIN SELECT * FROM book4 WHERE book_id=1001 AND book_name=‘some’; 查询字段中指定了2个字段都包含在定义多列索引中,最重要的是其中有定义多列索引中的首字段book_id,所以这条查询语句一定会使用多列索引,
而下面的这个例子
EXPLAIN SELECT * FROM book4 WHERE info=‘book’ AND book_name=‘some’;
在这里插入图片描述
infobook_name 虽然都在定义的多列索引里,但它们都不是多列索引的首字段,所以在查询时候还是不会使用多列索引。
创建全文索引
在这里插入图片描述
在这里插入图片描述
创建索引的另一种方式,给已经存在的表创建索引:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用create index方式在已创建的表上创建索引:
在这里插入图片描述
在这里插入图片描述
这是在已经创建好的表上创建索引的另一种方式,
在这里插入图片描述
在这里插入图片描述
测试索引案例:
在这里插入图片描述
建表后,创建数据填充函数mock_data:
在这里插入图片描述
在创建函数过程中,如果出现错误提示:
ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)
需要设置,
SET GLOBAL log_bin_trust_function_creators=TRUE;
如果数据库没有使用主从复制,那么就可以将参数log_bin_trust_function_creators设置为1。

mysql> set global log_bin_trust_function_creators=1;

这个动态设置的方式会在服务重启后失效,所以我们还必须在my.cnf中设置,加上log_bin_trust_function_creators=1,这样就会永久生效。
expain 可以分析MySQL语句的执行能力(耗时),
SELECT * FROM app_user WHERE name=‘user99’;
EXPLAIN SELECT * FROM app_user WHERE name=‘user99’;
在查询语句最前面加上EXPLAIN ,就可以分析这条查询语句的耗时(执行能力),
删除索引:
DROP INDEX uk_idx_bname ON book6;
在这里插入图片描述
alter

september2024the23thMonday

需要用到索引的几种情况:

在这里插入图片描述

不需要使用索引的几种情况:

这里是引用

索引失效的几种原因:

在这里插入图片描述
在这里插入图片描述

september2024the23thMonday


http://www.ppmy.cn/ops/115227.html

相关文章

防火墙详解(三)华为防火墙基础安全策略配置(命令行配置)

实验要求 根据实验要求配置防火墙: 合理部署防火墙安全策略以及安全区域实现内网用户可以访问外网用户,反之不能访问内网用户和外网用户均可以访问公司服务器 实验配置 步骤一:配置各个终端、防火墙端口IP地址 终端以服务器为例&#xff…

Games101笔记-二维Transform变换(二)

1、什么是Transform Transform就是通过一个矩阵,进行缩放、旋转、平移等变换 2、缩放、旋转、切变、平移等基础变换 缩放变换: 反射变换: 切变: 绕原点旋转: 以上都是线性变换: 平移变换&#xf…

mac 怎么查看CPU核数

在 macOS 系统中,可以通过以下几种方法查看 CPU 核心数: 1. 使用“关于本机”查看 点击左上角的苹果图标()。选择“关于本机”。在弹出的窗口中,系统会显示 Mac 的基本信息,包括 CPU 的类型和核心数。比…

macOS平台(intel)编译MAVSDK安卓平台SO库

1.下载MAVSDK: git clone https://github.com/mavlink/MAVSDK.git --recursive 2.编译liblzma 修改CMakeLists.txt文件增加C与CXX指令-fPIC set(CMAKE_C_FLAGS "-fPIC ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-fPIC ${CMAKE_CXX_FLAGS}") 修改如下:…

【系统架构设计师】大数据架构入门

大数据技术随着互联网的迅猛发展逐渐成为企业和组织处理海量数据的核心工具。为了帮助快速掌握大数据架构的基础知识与应用场景,本指南将介绍大数据架构的核心概念、关键组件、常见模式以及一些快速上手学习的资源和建议。 1. 什么是大数据? 大数据(Big Data)是指超出了传…

实现信创Linux桌面录制成MP4(源码,银河麒麟、统信UOS)

信创国产化已是大势所趋,在国产操作系统上的应用开发的需求越来越多,比如,有客户需要在银河麒麟和统信UOS上实现录制桌面生成一个mp4文件。那么这个要如何实现了? 一. 技术方案 要完成这些功能,具体来说,…

Centos安装helm

Helm 是查找、分享和使用软件构建 Kubernetes 的最优方式。 两种安装方式,二进制安装、脚本安装。脚本安装服务器在下载安装包可能会下载失败。 脚本安装 官网提供了脚本安装 $ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/sc…

9.20-使用k8s部署wordpress项目

部署wordpress项目 部署mariadb # 启动docker进程systemctl start docker​# 拉取三个镜像​docker pull nginx:alpinedocker pull wordpress:latestdocker pull mariadb:latest​# 保存三个镜像​cddocker save -o wordpress.tar wordpress:latestdocker save -o mariadb.tar…