mysql高频面试题

1. mysql里的索引类型

在这里插入图片描述

2. 聚簇索引和非聚簇索引的区别

在这里插入图片描述

  • 聚簇索引适合场景:
    • 主键、唯一性要求高的字段。
    • 需要对数据进行范围查询时。
    • 对数据的读取频繁,并且数据行的插入和删除较少时。
  • 非聚簇索引适合场景:
    • 较多的查询条件,或者需要基于某些非主键字段进行查询时。
    • 需要创建多个索引来优化不同的查询条件。
    • 需要增加查询速度,但数据插入、删除操作频繁时。
      在这里插入图片描述
  1. AB, id, name, 查出A表中存在,在B表里不存在的所有数据

select * from A left join B on A.name= B.name WHERE B.name IS NULL ;

SELECT  A.id, A.name
FROM  A
WHERE  NOT  EXISTS  (SELECT  1FROM  BWHERE  A.id =  B.id
);

3. Mysql锁的机制了解吗?

  • 全局锁:

  • 表级锁:

    • 表锁
    • 元数据锁
    • 意向锁
    • Auto-INC 锁
  • 行级锁

    • Record 锁
    • Gap 锁
    • Next-Key Lock

4. 假设我有一个千万级的数据表,我要在生产环境下加索引

5.1 使用 ONLINE 选项(如果支持)

  • MySQL 5.6 及以上版本支持使用 ONLINE 选项创建索引,可以在不锁定表的情况下创建索引。这有助于避免对查询和插入的干扰。

CREATE INDEX idx_column_name ON table_name (column_name) ONLINE;

5.2 分批次创建索引

如果表非常大,可以考虑分批次创建索引。假设表的数据分布有一定规律,可以将数据分成多个部分,逐步进行索引创建。

步骤:

  • 可以通过分区表(Partitioning)或根据某些条件(如日期、范围)选择性地创建索引。
  • 创建索引时使用 ALGORITHM=INPLACE,可以减少表的锁定时间。

5.3 低流量时段执行索引创建

在生产环境中,通常有低流量时段。可以通过定时任务在低峰期执行索引创建。

5.4 逐步添加索引

对于已经有索引的大表,逐步添加索引可以避免一次性创建多个索引造成的负载过高。每次添加一个索引后,评估系统性能,确保没有重大性能瓶颈后再添加下一个。

5.5 使用 pt-online-schema-change 工具

Percona Toolkit 提供的 pt-online-schema-change 工具可以在不中断服务的情况下安全地对表结构进行更改(如创建索引)。该工具通过创建一个新的表来实现更改,并通过触发器同步数据,这样对生产环境的影响较小。

pt-online-schema-change --alter “ADD INDEX idx_column_name (column_name)” D=your_db,t=your_table --execute

5. 千万级表,保证性能的前提下,才能保证sql是否用到索引。

1. 确保查询语句使用索引

1.1 条件多个时,使用覆盖索引

覆盖索引(Covering Index)是指查询中的所有字段都可以通过索引来访问,而不需要回表(即不需要再访问数据表中的行)。如果查询能够通过索引覆盖完成,它的性能会非常高。

覆盖索引的前提:索引包含了所有查询字段,包括 SELECT 中的字段、WHERE 条件中的字段、JOIN 语句中的字段、ORDER BY 排序的字段等。

CREATE INDEX idx_column1_column2 ON your_table (column1, column2);

SELECT column1, column2 FROM your_table WHERE column1 = ‘value1’ AND column2 = ‘value2’;

column1 和 column2通过覆盖索引就能完成查询,而不需要访问表中的实际数据行。

1.2 使用合适的索引

确保查询条件中的字段有相应的索引。常见的情况包括:

  • WHERE 子句中经常查询的字段。
  • JOIN 连接条件中的字段。
  • ORDER BY 排序的字段。
  • GROUP BY 聚合的字段。

你可以根据实际的查询情况,使用单列索引或复合索引。复合索引尤其有效于多条件查询。

2. 验证查询是否使用索引 - EXPLAIN

使用 EXPLAIN(或 EXPLAIN ANALYZE)来分析查询的执行计划,查看查询是否有效使用了索引。

2.1 使用 EXPLAIN

EXPLAIN SELECT column1, column2 FROM your_table WHERE column1 = ‘value1’ AND column2 = ‘value2’;

+----+-------------+------------+--------+----------

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

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

相关文章

MySQL第二弹----CRUD

笔上得来终觉浅,绝知此事要躬行 🔥 个人主页:星云爱编程 🔥 所属专栏:MySQL 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 ​ 一、修改表 使用ALTER …

c++解决常见内存泄漏问题——智能指针的使用及其原理

目录 前言: 1. 智能指针的使用及其原理 1. 1 智能指针的使用场景分析 1.2 RAII和智能指针的设计思路 1.3 C标准库智能指针的使用 1.3 1 auto_ptr 1.3 2 unique_ptr 1.3 3 shared_ptr(重) 1.3 4 weak_ptr 1.3 5 模拟实现删除器 2.智能指针的原…

NVR管理平台EasyNVR设备通过ONVIF接入出现404访问错误是什么原因?

如今,视频监控在各行各业都得到了广泛应用,成为现代社会不可或缺的一部分。随着技术的不断进步,视频监控系统已经从传统的模拟监控发展到高清化、网络化和智能化阶段,其应用领域也从最初的安防扩展到智慧城市、智能家居、交通管理…

CANape 新建工程和连接

文章目录 简介1、新建工程1.1 打开 CANape1.2 新建工程1.3 新建 Device1.3.1 添加NEW DEVICE1.3.2 添加 NEW From Database1.4 配置 Memory Segment1.5 新建trace窗口和观测窗口 2、硬件连接2.1 更改与canape盒子通道一致的通道编号,选择驱动配置2.2 选择硬件配置 问…

[Qt] Qt介绍 | 搭建SDK

目录 1. Qt 简介 什么是 Qt? 1.1 引入 1.2 GUI 1.3 Qt 介绍 2. Qt 发展史 3. Qt 支持的平台 4. Qt 版本信息 5. Qt 的优点 6. Qt 应用场景 7. Qt 成功案例 8. Qt 发展前景及就业分析 二. Qt 开发环境搭建 1. 开发工具概述 2.Qt SDK 安装 3.使用 1. …

ES 磁盘使用率检查及处理方法

文章目录 1. 检查原因2. 检查方法3. 处理方法3.1 清理数据3.2 再次检查磁盘使用率 1. 检查原因 磁盘使用率在 85%以下,ES 可正常运行,达到 85%及以上会影响 PEIM 数据存储。 在 ES 磁盘分配分片控制策略中,为了保护数据节点的安全&#xff0…

NLP自然语言处理——使用飞桨实现基于LSTM的情感分析

任务说明: 通过对电影评论历史数据分析,构建深度学习分类模型,最终完成对新的数据样本的识别分类。 任务要求: 运用神经网络算法,创建、训练、评估模型,完成对电影评论的情感分类任务。 数据集说明&#xf…

LabVIEW条件配置对话框

条件配置对话框(Configure Condition Dialog Box) 要求:Base Development System 当右键单击**条件禁用结构(Conditional Disable Structure)**并选择以下选项时,会显示此对话框: Add Subdiagr…

为什么MoE推理效率更高:精简FFN

MoE全称是“混合专家”,它由多个专家网络和一个门控网络组成……整个MoE完全复用了Transformer的结构,只是将其中的FFN层替换成了MoE层。MoE层里的门控网络其实就是个专家分类器,每次根据输入Token生成专家的概率分布,然后选择排序靠前的K个专家进行Token处理,最后再将K个…

线段树例题题解

卫星覆盖(NOI1997) 题面: SERCOI(Space-Earth Resource Cover-Observe lnstitute) 是一个致力于利用卫星技术对空间和地球资源进行覆盖观测的组织。现在他们研制成功一种新型资源观测卫星 -SERCOI-308。这种卫星可以…

超详细!一文搞定PID!嵌入式STM32-PID位置环和速度环

本文目录 一、知识点1. PID是什么?2. 积分限幅--用于限制无限累加的积分项3. 输出值限幅--用于任何pid的输出4. PID工程 二、各类PID1. 位置式PID(用于位置环)(1)公式(2)代码使用代码 2. 增量式…

STM32 SPI读取SD卡

七个响应类型: R1 Response (Normal Response): R1响应是最基本的响应,包含一个字节的状态位,用于指示命令是否成功执行。常用。最高位为0。最低位为1表示是空闲状态。其他位是各种错误提示。 R1b Response (Normal with Busy): 类似于R1&a…

玩转OCR | 腾讯云智能结构化OCR初体验

随着数字化进程的加速,光学字符识别(OCR)技术已逐渐成为提高企业生产力、优化工作流的重要工具。腾讯云智能结构化OCR凭借其领先的技术、广泛的应用场景和灵活的定制化能力,正在帮助各行业客户更高效地进行文档处理与数据提取。本…

STM32 高级 WIFi案例1:测试AT指令

需求描述 测试AT指令是否能够正常控制ESP32的wifi,比如重启、读取设备信息等。 思路: stm32通过串口usart2向ESP32发布命令。ESP32通过串口1返回信息。 配置: 第一步:对ESP32芯片烧录可以读取stm32命令的固件(fac…

MySQL查看日志

目录 1. 日志 1.1 错误日志 1.2 二进制日志 1.2.1 介绍 1.2.2 格式 1.2.3 查看 1.2.4 删除 1.3 查询日志 1.4 慢查询日志 1. 日志 1.1 错误日志 错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过 程…

Spring Boot教程之三十九: 使用 Maven 将 Spring Boot 应用程序 Docker 化

如何使用 Maven 将 Spring Boot 应用程序 Docker 化? Docker是一个开源容器化工具,用于在隔离环境中构建、运行和管理应用程序。它方便开发人员捆绑其软件、库和配置文件。Docker 有助于将一个容器与另一个容器隔离。在本文中,为了将Spring B…

机器人基础-自由度及其简单计算

机器人基础-自由度及其简单计算 1.自由度(DOF)2.自由度的计算3.自由度计算例题例1.例2.例3. 对于一个机器人的手腕,一般要求实现对空间坐标轴X、Y、Z的旋转运动,分别是翻/回转(Roll)、俯仰(Pitc…

初学stm32---高级定时器输出n个pwm波

目录 高级定时器简介:(F1) 高级定时器框图 重复计数器特性 高级定时器输出指定个数PWM实验原理 高级定时器输出指定个数PWM实验配置步骤 相关HAL库函数介绍 关键结构体介绍 高级定时器简介:(F1) 1.高级定时器 :TIM1/TIM8 2.主要特性&…

【MySQL】踩坑笔记——保存带有换行符等特殊字符的数据,需要进行转义保存

问题描述 从DBeaver中导出了部分业务数据的 insert sql,明明在开发、测试环境都可以一把执行通过,却在预发环境执行前的语法检查失败了,提示有SQL语法错误。 这条SQL长这样,default_sql是要在odps上执行的sql语句,提…

GPU 进阶笔记(二):华为昇腾 910B GPU

大家读完觉得有意义记得关注和点赞!!! 1 术语 1.1 与 NVIDIA 术语对应关系1.2 缩写2 产品与机器 2.1 GPU 产品2.2 训练机器 底座 CPU功耗操作系统2.3 性能3 实探:鲲鹏底座 8*910B GPU 主机 3.1 CPU3.2 网卡和网络3.3 GPU 信息 3.3…