mysql连接5个表加模糊查询的sql怎么优化分析

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 🍅程序员小王的博客:程序员小王的博客🍅 欢迎点赞 👍 收藏 ⭐留言 📝🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕🍅java自学的学习路线:java自学的学习路线

注意:5个表连接在真实项目中不推荐这样连接,实战中,表连接不能超过3张表,否则会有性能问题。

 

     SELECT
        s.s_id,
        s.s_name,
        s.s_phone,
        s.s_qq,
        s.s_age,
        s.s_birthday,
        s.s_stars,
        s.s_attribute,
        clazz.clazz_id,
        clazz.c_name,
        g.g_id,
        g.g_name,
        c.c_id,
        c.c_name,
        m.m_id,
        m.m_name
        FROM (
       #6.select * from t_student where s_name like '王恒%' 
       #7.select * from t_student where  instr(s_name,'王恒') 
       #8..select s_id,clazz_id,g_id,c_id,s_name,s_phone,s_qq,s_age,s_birthday,s_stars,s_attribute from t_student where  instr(s_name,'王恒') 
        ) s
        LEFT JOIN t_clazz clazz ON s.clazz_id = clazz.clazz_id
        LEFT JOIN t_group g ON s.g_id = g.g_id
        LEFT JOIN t_city c  ON  s.c_id = c.c_id
        LEFT JOIN m_s_fk ms ON s.s_id = ms.s_id
        LEFT JOIN t_mark m ON ms.m_id = m.m_id


0.png

1.png

2.png


#  0.00140350
select * from t_student where s_name like '王恒%' 


3.png

1、instr优化

#0.00124200
 select * from t_student where  instr(s_name,'王恒')


4.png


2、写全字段

 # 0.00059350
select s_id,clazz_id,g_id,c_id,s_name,s_phone,s_qq,s_age,s_birthday,s_stars,s_attribute 
from t_student where  instr(s_name,'王恒') 


5.png


3、索引优化

#创建索引   0.00030400
  create index s_name on t_student(s_name);


6.png

总结:

  1. 1.sql 在使用SELECT语句或者使用其它语句时,直接使用*和把所有的字段弄上去查询,性能有很大差距,所以我们平时写查询最好用字段写上

  2. 2.instr(str,substr)返回字符串str串中substr子串第一个出现的位置,没有找到字符串返回0,否则返回位置(从1开始) 进行优化
  3. 创建索引优化


原始模糊查询(0.00140350)<instr优化(0.00124200)<写全字段(0.00059350)<索引优化( 0.00030400)[注:索引优化只能使用:like keyword%!索(MISSING)引有效]



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
存储 关系型数据库 MySQL
基于案例分析 MySQL 权限认证中的具体优先原则
【10月更文挑战第26天】本文通过具体案例分析了MySQL权限认证中的优先原则,包括全局权限、数据库级别权限和表级别权限的设置与优先级。全局权限优先于数据库级别权限,后者又优先于表级别权限。在权限冲突时,更严格的权限将被优先执行,确保数据库的安全性与资源合理分配。
|
4天前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
8天前
|
SQL 数据库 索引
SQL语句实现投影连接:方法与技巧详解
在SQL数据库查询中,投影和连接是两个核心概念
|
8天前
|
SQL 运维 关系型数据库
MySQL 运维 SQL 备忘
MySQL 运维 SQL 备忘录
32 1
|
10天前
|
Java 关系型数据库 MySQL
【编程基础知识】Eclipse连接MySQL 8.0时的JDK版本和驱动问题全解析
本文详细解析了在使用Eclipse连接MySQL 8.0时常见的JDK版本不兼容、驱动类错误和时区设置问题,并提供了清晰的解决方案。通过正确配置JDK版本、选择合适的驱动类和设置时区,确保Java应用能够顺利连接MySQL 8.0。
61 1
|
8天前
|
SQL 数据库 索引
SQL语句实现投影连接:技巧与方法详解
在SQL数据库操作中,投影连接(Projection Join)是一种常见的数据查询技术,它结合了投影(Projection)和连接(Join)两种操作
|
10天前
|
SQL 存储 关系型数据库
mysql 数据库空间统计sql
mysql 数据库空间统计sql
22 0
|
10天前
|
SQL 存储 关系型数据库
mysql SQL必知语法
本文详细介绍了MySQLSQL的基本语法,包括SELECT、FROM、WHERE、GROUPBY、HAVING、ORDERBY等关键字的使用,以及数据库操作如创建、删除表,数据类型,插入、查询、过滤、排序、连接和汇总数据的方法。通过学习这些内容,读者将能更好地管理和操
8 0
|
12天前
|
SQL JavaScript 关系型数据库
Node.js 连接 MySQL
10月更文挑战第9天
13 0
|
13天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
61 6