首页 > 数据库 >SQL优化还凭经验?这个工具能帮你智能优化SQL

SQL优化还凭经验?这个工具能帮你智能优化SQL

时间:2023-07-04 21:14:40浏览次数:38  
标签:优化 智能 SQL soar 安装 图形化 SOAR

前言

SQL优化是程序开发中经常遇到的问题,尤其是在程序规模不断扩大的时候。SQL的好坏不仅制约着程序的规模,影响着用户的体验,甚至威胁着信息的安全。

我们经常听到说哪家平台挂了,哪家网站被黑了,但我们不知道,其实这些平台挂了、被黑了的原因很多时候在于SQL不够健壮。SQL不够健壮易造成数据查询超时、SQL注入、信息泄漏等问题。

SQL优化归根到底是SQL语句的优化,索引的优化。由于很多数据库自带的分析工具不够强大便捷,很多时候要想写出好一点的SQL语句完全凭经验。这也是为什么有人说看一个程序员资历深不深就看他写的SQL好不好的原因。

凭经验做事不总是那么可靠的,况且也并不是人人都有那么多的经验。那如果不靠经验,那新手怎么办?答,使用SOAR!

什么是SOAR

SOAR是SQL Optimizer And Rewriter的简称。SOAR是一个对SQL进行优化和改写的自动化工具,由小米人工智能与云平台的数据库团队开发与维护。现在在GitHub上有4000多星。

功能特点

SOAR有如下功能特点:

  • 跨平台支持(支持Linux,、Mac、Windows环境)
  • 目前只支持 MySQL 语法族协议的SQL优化
  • 支持基于启发式算法的语句优化
  • 支持复杂查询的多列索引优化(UPDATE, INSERT, DELETE, SELECT)
  • 支持EXPLAIN信息丰富解读
  • 支持SQL指纹、压缩和美化
  • 支持同一张表多条ALTER请求合并
  • 支持自定义规则的SQL改写

安装使用

SOAR支持Linux、Mac、Window环境,可以在Linux、Mac、Window上安装使用。下面以Window版本为例介绍安装使用过程。

1、安装Go

SOAR的使用依赖Go语言,所以在安装使用之前,先安装Go。

下载地址:https://studygolang.com/dl

Go安装完成后,在cmd中输入 go version ,如果出现版本信息,则表示安装成功。

  【数据库】SQL优化还凭经验?这个工具能帮你智能优化SQL

如果报错,将将C:Goin(你的安装路径)加入环境变量。

2、安装SOAR

选择windows版本下载SOAR安装文件

下载地址:https://github.com/XiaoMi/soar/releases

将安装文件soar.windows-amd64重命名为soar.exe,放置D:Program Files (x86)soar文件夹下,你也可以将这个目录加入到环境变量中。

打开cmd,进入到soar.exe所在目录,然后输入 soar -version命令,如果出行版本信息,则为安装成功。

  【数据库】SQL优化还凭经验?这个工具能帮你智能优化SQL

3、安装Web图形化工具

这一步不是必须的,如果你喜欢命令行操作,完成步骤2即可。选择安装Web图形化工具,只是为了方便操作。

安装Web图形化工具,可以在下面地址下载:

https://github.com/xiyangxixian/soar-web

此Web图形化工具依赖Python3x、Flask、PyMysql、Pycryptodome。因此,安装此Web图形化工具前先安装Python3x。待Python3x完成后,执行如下命令,安装其他依赖。

pip install -r requirement.txt

待所有依赖晚装完毕,执行如下命令,启动服务。

run.bat

如下是安装后的效果图:

 

  image

 

SQL优化分析页面

此页面不仅可以分析SQL、智能改写SQL,还可以美化SQL

 

  image

 

你可以根据分析建议优化SQL语句

 

  image

 

SQL优化建议效果

此Web图形化工具的数据库配置配置在LocalStorage,方便操作,也不增加额外负担

 

  image

 

数据库配置页面



作者:java高并发
链接:https://www.jianshu.com/p/1594228e18c6
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:优化,智能,SQL,soar,安装,图形化,SOAR
From: https://www.cnblogs.com/xmsz118/p/17526987.html

相关文章

  • 数据库问题之“字符编码问题 Cause: java.sql.SQLException: Incorrect string value:
     1)表1和表2的产品名称[数据库字段]字符编译方式不一致①问题 org.springframework.jdbc.UncategorizedSQLException:Errorupdatingdatabase.Cause:java.sql.SQLException:Incorrectstringvalue:'\xF0\x9F\x8E\x81\xE7\x88...'forcolumn'product_name'atr......
  • Mysql索引为什么选择B+树
    前言谈到索引,大家并不陌生。索引本身是一种数据结构,存在的目的主要是为了提高数据查询效率,最大程度减少磁盘IO。那么MysqlInnoDB存储引擎为什么选择B+树,而不是二叉树、B树,Hash等数据结构呢?使用二叉树会有哪些问题?了解过二叉树的都知道,一个节点只能有两个子节点,一个子节点只能......
  • 图解 MySQL 索引:B-树、B+树,终于搞清楚了
    看了很多关于索引的博客,讲的大同小异。但是始终没有让我明白关于索引的一些概念,如B-Tree索引,Hash索引,唯一索引….或许有很多人和我一样,没搞清楚概念就开始研究B-Tree,B+Tree等结构,导致在面试的时候答非所问!索引是什么?索引是帮助MySQL高效获取数据的数据结构。索引能干什......
  • SQL SERVER中的行传列
    --建表语句IFEXISTS (SELECTTABLE_NAMEFROMINFORMATION_SCHEMA.TABLESWHERETABLE_NAME='SCORE_INFO')DROPTABLESCORE_INFO;CREATETABLESCORE_INFO( SCORE_ID INT IDENTITY(1,1)NOTNULL, USER_NAME VARCHAR(20) NOTNULL, SCORE_NAME VAR......
  • 油田智能化转型:钡铼技术多功能RTUS475的关键角色
    标题:S475在油田数据采集中的应用摘要:本文介绍了钡铼技术多功能RTUS475在油田数据采集中的应用。该设备基于高性能微处理器MCU和嵌入式实时操作系统,支持ModbusSlave和ModbusMaster功能,并能通过无线网络实现短信报警和数据传输到监控中心,为油田数据采集提供了稳定可靠的解决方......
  • MYSQL语句大全——收藏一波
     一、创建和删除数据库1、创建用户//创建用户且设置密码,在MySQL中行,但在Oracle中行----必须在超级管理员身份下操作createuserhncuidentifiedby'1234'2、创建数据库//创建数据库并手动指定编码格式CREATEDATABASEIFNOTEXISTShncuDEFAULTCHARACTERSET'ut......
  • 象群游牧优化算法(EHO)(Matlab完整代码实现)
    ......
  • 面试常问集锦——MySQL部分数据库的隔离级别
    聚集索引与非聚集索引的区别https://zhuanlan.zhihu.com/p/113917726Myisam引擎采用非聚集索引,索引与数据分开,叶子结点存放数据的地址。Innodb采用聚集索引,主键索引树的叶子结点存放真实数据,非主键索引树的叶子结点存放主键值索引底层的实现,为什么不选红黑树、B树等?总结(1)哈希表 ......
  • 面试再问MySQL存储过程和触发器就把这篇文章给他
    Mysql存储过程及触发器trigger存储过程一、一个简单的存储过程1,一个简单的存储过程delimiter$$ createproceduretesta() begin Select*fromemp; Select*fromdept; End; $$; delimiter; --调用存储过程 calltesta();存储过程的结构组成:1,创建格式:createpr......
  • 面试再问MySQL存储过程和触发器就把这篇文章给他
    Mysql存储过程及触发器trigger 存储过程一、一个简单的存储过程1,一个简单的存储过程 delimiter$$ createproceduretesta() begin Select*fromemp; Select*fromdept; End; $$; delimiter; --调用存储过程 calltesta();存储过程的结构组成:1,创建......