当前位置: 首页 > article >正文

【MySQL】SQL语句的优化

前言:

        在开发中,我们测试刚编写的接口时感觉执行速度不慢,便没有着重管理SQL语句是否合理。之后随着数据量的增加,接口响应速度显著慢了许多,此时,我们就要考虑SQL的优化了。

SQL优化是为更高效的对数据库进行查询和操作。所以下面的操作,都是围绕这个中心来展开的。

目录

 一、查询语句的优化

二、索引的优化 

三、执行计划(explain)的分析 

四、表设计

五、参数化查询


 一、查询语句的优化

1、使用合适的查询语句

        根据情况选择INNER JOIN 和 OUTER JOIN(左右连接、全外连接),减少不必要的数据处理。(INNER JOIN 和 OUTER JOIN 的区别,详见:此文章)

2、限制返回行的数量:

        可以在SQL中使用 limit ,如:limit 10 ,每次查询只返回10条数据。

3、避免SELECT *

        在SQL查询语句中,我们只选择自己所需要的列,减少数据传输数量。

        补充:虽然在MySQL8.0对select * 提供了更友好的支持,但我们还是尽量去按照自己需要什么列就查询什么列,一方面节省资源,提升效率;另一方面也方便后期的维护,不然一看这SQL中是个 * 号,不能直观获取到查询的字段信息。 

二、索引的优化 

1、创建合适的索引:

        根据实际业务,在查询条件(where、join、order by)中创建合适的索引。

2、避免过多的索引:

        索引是把双刃剑,适当的添加索引能极大提高接口性能,但过多的索引会导致弄巧成拙,反而降低我们的写入性能。 

三、执行计划(explain)的分析 

     通过explain查询SQL执行计划,了解我们索引的使用情况,可以帮我我们找到性能瓶颈。

详情:【MySQL】EXPLAIN(执行计划)关键字是什么?-CSDN博客

四、表设计

1、设计数据库是,要求符合三大范式,尽量减少冗余字段(可以将冗余字段存入一张冗余字段表中)。

2、分区:

        对于非常大的表,可以采用分区技术,将表划分为多个部分,提高查询效率。

五、参数化查询

         避免SQL注入攻击,并且允许数据库重用explain执行计划,从而提高SQL性能。

 六、配置数据库缓存的合理性 

详情见:【MySQL】了解并操作MySQL的缓存配置与信息-CSDN博客


http://www.kler.cn/a/310958.html

相关文章:

  • XML Schema 字符串数据类型
  • Snort的配置与使用
  • 如何线程安全的使用HashMap
  • docker基础:搭建centos7(详见B站泷羽sec)
  • Redis五种数据类型剖析
  • 2.操作系统常见面试问题2
  • Keil MDK5学习记录
  • 自定义Spring Security认证处理的完整解决方案
  • 2024ICPC第一场网络赛补题
  • 思通数科开源智能文档识别平台的核心功能
  • 在Linux服务器上如何实现自动化部署?
  • 【车载以太网】【SOME/IP】Wireshark 解析
  • Maven 的多种打jar包方式详细介绍、区别及使用教程——附使用命令
  • 分类预测|基于哈里斯鹰优化最小二乘支持向量机的数据分类预测Matlab程序HHO-LSSVM多特征输入多类别输出
  • 软件编程随想
  • 数据库MySQL、Mariadb、PostgreSQL、MangoDB、Memcached和Redis详细介绍
  • ARM64基础 -- 栈帧管理示例
  • 什么是轮播图?如何实现轮播图?有几种方法?
  • 图书馆座位预约系统小程序的设计
  • 1.2 测试基础
  • 小程序组件间通信
  • SQL案例分析:美联储降息前后的复利差距
  • linux-Linux 内核与模块管理-内核基础
  • 最新简洁大方的自动发卡网站源码/鲸发卡v11.61系统源码/修复版
  • 亲测有效,长期有效的RTSP流地址公网RTSP地址,各种类型的视频源
  • Flask-JWT-Extended登录验证, 不用自定义