SQL语句命中索引,但还是执行很慢

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL的慢查询日志是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值(默认值10s)的SQL,则会被记录到慢查询日志中。

慢查询

MySQL的慢查询日志是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值(默认值10s)的SQL,则会被记录到慢查询日志中。

慢查询日志中记录的不仅是select语句,update等运行时间超过long_query_time值的SQL,都会被记录到慢查询日志中。

MySQL中,默认慢SQL日志是未开启,需要手动开启

# 查看慢查询日志是否开启
show variables like '%slow_query_log%'

索引

索引是一种特殊的文件,它包含着对数据表里所有记录的引用指针

索引是一种数据结构,数据库索引,能够让我们快速查询、更新数据库表中的数据

索引可以很大提高MYSQL的检索速度

索引类型

  • 存储结构划分

    • BTree索引(B+Tree索引和B-Tree索引)
    • Hash索引:键值对
    • 全文索引:只有MyISAM引擎支持
    • R-Tree索引:支持该类型的存储引擎只有MyISAM、BDb、InnoDb、NDb、Archive几种,使用比较少
  • 应用层次划分

    • 普通索引:仅加速查询
    • 唯一索引:加速查询 、列值唯一(可以有null)
    • 主键索引:加速查询 、列值唯一(不可以有null),且 表中只有一个
    • 组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并
    • 全文索引:对文本的内容进行分词,进行搜索

面试题:命中索引但还是执行慢

首先,我们解答一个问题:使用了索引和是否进入慢查询有没有关系?

没有必然的联系。慢查询是由于执行时间超过了long_query_time值将被记录到慢查询日志中,而导致这个原因可能是网络或者数据库抖动等等其他外部的因素影响。而使用索引是表示一个SQL语句的执行过程。,所以它们之间没有必然的联系。

所以,如果命中索引,但SQL效率仍然慢,其可能原因:

  • 命中的索引可能不是最优的索引,需要重新调整索引的设置
  • 索引字段重复或者空置太多
  • 查询范围太广,形成全索引扫描
  • 没有利用到覆盖索引导致产生回表现象
  • 索引字段数据分布太随机,导致即便没有回表查询但是大量随机IO
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6天前
|
SQL 存储 数据库
sql事务、视图和索引
sql事务、视图和索引
16 0
|
6天前
|
SQL 存储 弹性计算
GaussDB SQL调优:建立合适的索引
GaussDB SQL调优:建立合适的索引
19 0
|
6天前
|
SQL 索引
SQL索引小结
SQL索引小结
21 0
|
6天前
|
SQL 存储 关系型数据库
sql语句,索引,视图,存储过程
sql语句,索引,视图,存储过程
33 0
|
6天前
|
存储 关系型数据库 MySQL
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
249 0
|
6天前
|
SQL 数据库 数据库管理
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(一)模式、表、索引与视图
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(一)模式、表、索引与视图
68 11
|
6天前
|
存储 SQL 缓存
4.2.1 SQL语句、索引、视图、存储过程
4.2.1 SQL语句、索引、视图、存储过程
|
6天前
|
SQL 关系型数据库 MySQL
SQL提示与索引终章
SQL提示与索引终章
|
6天前
|
SQL 自然语言处理 搜索推荐
SQL Server 索引和视图
SQL Server 索引和视图
|
6天前
|
XML SQL 存储
SQL Server的索引选择
SQL Server的索引选择
11 0