本文首发于个人微信公众号《andyqian》,期待你的关注

前言

有好几天没有写文章了,实在不好意思。之前就有朋友希望我写写MySQL优化的文章。我迟迟没有动笔,主要是因为,SQL优化这个东西,很广,技巧也很多。自己在SQL优化方面的知识又还很欠缺。总觉得还不到分享的。思考许久,还是写一篇文章,记录一下。就算是抛砖引玉吧!

SQL优化

SQL优化是一个分析,优化,再分析,再优化的过程。站在执行计划的角度来说,我们这个过程,就是在不断的减少rows的数量。主要步骤有:

通过explain 来查看执行计划。通过这一步骤,我们能够分析出,该语句有没有走索引,索引合不合理的重要依据。《读懂MySQL执行计划》

缩小范围。例如使用 < > ,between …and。来缩小扫描范围。

(对于该类,通常可优化于limit,时间范围等SQL,而且非常有效)。

减少连接数量 (对于连接查询,我们必须尽可能减少每个子连接的结果集数量,只包含有效数据)。

避免类型转换。

之前我们就谈过,隐式类型转换是最容易疏忽的慢SQL。如何避免?大家可以参考之前的文章《谈谈MySQL隐式类型转换》。

对于主键连续时而且允许的情况下,我们甚至可以使用max(id)来代替count(*)来统计用户数。

用 in 代替 or, 少用like,避免使用函数运算。

系统拆分

对于互联网应用,特别是高并发应用来说,我们遇到多表连接导致慢SQL影响性能时。我们不应一味的追求在SQL上如何优化。更应该考虑这样的设计是否合理,是否有拆分的可能性。所以,

我甚至认为:系统拆分才是解决慢SQL的终极方法。

报表库

其实呀,有些SQL是无法再进行优化的,为什么这么说呢?没有在线运算,没有离线运算,统计报表如何出?在一定量级的数据表中,做统计报表。即使合理的索引,也会比较慢,这时建议将这些SQL放入特定的报表库执行。以免造成主库压力。性能下降。对主流程造成影响。

结语

SQL优化是一个比较广的话题且非常有意思的话。这篇文章主要给的是一些优化思路,不足的是并没有给出更多的优化实例。等攒够了优化实例,会再次分享出来。

最后:在留言区也分享一下你们SQL优化的思路呗~

相关阅读:

扫码关注,一起进步

谈谈mysql优化_浅谈MySQL SQL优化相关推荐

  1. 支付宝的数据库是MySQL变种_浅谈MySql的储存引擎(表类型)

    浅谈mysql的存储引擎(表类型) 什么是MySql数据库 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合. 我们通常说的MySql数据库, ...

  2. mysql sql优化_浅谈mysql中sql优化

    说到sql优化,一般有几个步骤呢,在网上看到了一篇很不错的帖子.在这分享一下吧,也是自己学习的一个过程. 一.查找慢查询 1.1.查看SQL执行频率 SHOW STATUS LIKE 'Com_%'; ...

  3. mysql 安全问题_浅谈MySQL数据库的Web安全问题

    数据安全是现在互联网安全非常重要一个环节.而且一旦数据出现问题是不可逆的,甚至是灾难性的. 有一些防护措施应该在前面几个博文说过了,就不再赘述.比如通过防火墙控制,通过系统的用户控制,通过Web应用的 ...

  4. mysql重传_浅谈 MySQL 中的事务和 ACID

    所谓事务(Transaction),就是通过确保成批的操作要么完全执行,要么完全不执行,来维护数据库的完整性.举一个烂大街的例子:A 向 B 转账 1000 元,对应的 SQL 语句为:(没有显式定义 ...

  5. mysql inner和left优化_浅谈mysql中的left join和inner join性能及优化策略

    前言 看一下 下面的sql语句:select * from a left join b on a.x = b.x left join c on c.y = b.y 这样的多个left join组合的时 ...

  6. tomcat 优化_浅谈Tomcat服务器优化方法

    对于JavaWeb开发人员而言,Tomcat已成为默认的web服务器,但是在生产环境下使用Tomcat部署应用,我们如果采用Tomcat默认的配置,尤其是内存和线程的配置,其配置都很低,容易成为性能瓶 ...

  7. 浅谈 AnalyticDB SQL 优化

    浅谈 AnalyticDB SQL 优化 前言 ADB计算引擎 ADB优化器 ADB索引 ADB SQL开发与表分区设计 ADB SQL开发的性能指南 ADB慢SQL的定位和常见原因 ADB慢SQL优 ...

  8. MySQL子查询的优缺点_浅谈mysql的子查询

    浅谈mysql的子查询 mysql的子查询的优化一直不是很友好,一直有受业界批评比较多,也是我在sql优化中遇到过最多的问题之一,你可以点击这里 ,这里来获得一些信息,mysql在处理子查询的时候,会 ...

  9. mysql 用户通配符_浅谈mysql通配符进行模糊查询的实现方法

    在mysql数据库中,当我们需要模糊查询的时候 ,我们会使用到通配符. 首先我们来了解一下2个概念,一个是操作符,一个是通配符. 操作符 like就是SQL语句中的操作符,它的作用是指示在SQL语句后 ...

最新文章

  1. 2022-2028年全球与中国漂白吸水棉市场研究及前瞻分析报告
  2. nginx 转发慢_为啥 Nginx 能轻松淦到几万并发?
  3. dispatcherservlet发送2次请求_Spring源码分析(三):MVC请求分发器DispatcherServlet设计实现...
  4. django2 mysql配置_Django:Python3.6.2+Django2.0配置MySQL 转载
  5. VMware host-only模式上网设置
  6. GCD Game 博弈论-Nim-质因数应用-质因数个数预处理
  7. Android DDMS如何使用?
  8. c++读出像素矩阵_Python传numpy矩阵调c++(求3D图像连通区域)
  9. 黑马程序员_Java学习日记num8
  10. update mysql.user set password_修改mysql密码
  11. Mac M1 安装JDK8
  12. 虚拟光驱下载安装和使用,Windows系统如何直接打开iso文件
  13. SQL Server 无法启动WMI服务
  14. windows/linux远程开关机原理及实现
  15. 勾股定理的毕达哥拉斯证明
  16. Windbg命令学习1(vertarget和lm和lmvm)
  17. TypeScript介绍
  18. MATLAB R2016b + VS2017专业版安装spams
  19. python自相关函数提取基音周期_自相关函数法基音周期提取(matlab版)
  20. 《2022 中小企业快成长之年,上云 选对平台是关键,这次我站华为云》

热门文章

  1. MATLAB编程规范
  2. Leetcode 102.二叉树的层序遍历 (每日一题 20210628)
  3. Mac~终端安装Homebrew packages超时
  4. 机器学习笔记: 聚类 模糊聚类与模糊层次聚类(论文笔记 Fuzzy Agglomerative Clustering :ICAISC 2015)
  5. 文巾解题 342. 4的幂
  6. HDFS--Hadoop分布式文件系统
  7. Python风格规范
  8. 可视化-echarts流向图制作及recharts
  9. 【算法数据结构Java实现】Java实现动态规划(背包问题)
  10. 【算法与数据结构】在n个数中取第k大的数(基础篇)