left join查询耗时太慢,添加索引解决问题

背景

因为最近自己用的小app越用感觉加载越慢,以为是自己app开发逻辑出现问题了,结果才发现是自己很早以前的代码用到的是left join多表联查,以前因为数据少,所以没有感觉,现在数据量稍微一大,耗时就非常严重了。如下图所示,3张表中有一个是日志表,已经有几w条数据了,所以耗时已经达到了2.8s。

解决方案

添加索引

主键不需要添加索引,除此之外,对使用left join的on进行对比时的两个字段都进行新建索引(如上图的ni.notice_id、n.trace_id、rl.trace_id),而且这些字段的类型要保持一致。代码如下:

javascript 复制代码
// ALTER table [tableName] ADD INDEX [indexName]([columnName]);
   ALTER table request_log  add index trace_id_index(trace_id);

查询索引

javascript 复制代码
// show index from [tableName];
   show index from notice_isread;

删除索引

javascript 复制代码
 // DROP INDEX [index_name] ON [table_name];
    DROP INDEX trace_id_index ON request_log;

效果

如下图所示,优化后只需要63ms,芜湖起飞,完美!

相关推荐
程序员岳焱15 分钟前
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
后端·sql·mysql
Channing Lewis1 小时前
sql server如何创建表导入excel的数据
数据库·oracle·excel
秃头摸鱼侠1 小时前
MySQL安装与配置
数据库·mysql·adb
UGOTNOSHOT1 小时前
每日八股文6.3
数据库·sql
行云流水行云流水1 小时前
数据库、数据仓库、数据中台、数据湖相关概念
数据库·数据仓库
John Song2 小时前
Redis 集群批量删除key报错 CROSSSLOT Keys in request don‘t hash to the same slot
数据库·redis·哈希算法
IvanCodes2 小时前
七、Sqoop Job:简化与自动化数据迁移任务及免密执行
大数据·数据库·hadoop·sqoop
tonexuan2 小时前
MySQL 8.0 绿色版安装和配置过程
数据库·mysql
JohnYan2 小时前
工作笔记- 记一次MySQL数据移植表空间错误排除
数据库·后端·mysql
我最厉害。,。3 小时前
Windows权限提升篇&数据库篇&MYSQL&MSSQL&ORACLE&自动化项目
数据库·mysql·sqlserver