十分好用的SQL优化工具

简介: SQL优化工具是基于Spring Boot 3的Web应用,智能分析SQL并推荐索引(灰/橙色区分存在性),支持手工优化、项目扫描、AI改写(通义千问)及多数据库执行计划可视化(表格/树形/图形)。

SQL优化工具

📖 项目简介

SQL 优化工具是一个基于 Spring Boot 3 的 Web 应用,针对给定的查询 SQL 进行智能优化分析,给出合适的索引建议,并支持连接真实数据源做深度优化与执行计划分析。

核心特性:索引建议颜色区分 —— 已建立的索引以灰色(删除线)展示,尚未建立的以橙色展示,均支持一键复制。

✨ 主要特性

  • 🎯 智能索引建议:基于 JSqlParser 解析 AST,从 WHERE 等值/范围条件、JOIN ON、ORDER BY、GROUP BY 中提取候选列,生成合理的(组合)索引
  • 🎨 颜色区分状态:已存在=灰色、缺失/未核实=橙色,一目了然,支持复制粘贴
  • ✏️ 手工优化:粘贴单条 SQL 即时分析
  • 🔍 扫描优化:扫描项目目录,提取 MyBatis XML、Java 代码中的 SQL 字符串、注解中的 SQL(@Select/@Insert/@Update/@Delete/@Query),逐条分析并支持一键原地替换(自动 .bak 备份)
  • 🤖 AI 深度优化(可选):集成阿里云百炼(通义千问),对 SQL 智能改写
  • 🔗 配置数据源(可选):配置后可进行——
    • 索引存在性检测(区分灰/橙)
    • 冗余索引检测(给出 DROP 建议)
    • 大小表驱动判断(小表驱动大表建议)
  • 📊 SQL 执行计划:连接数据源后执行 EXPLAIN,提供表格 / 树形 / 图形三种视图(类 DBeaver):
    • 表格:结构化列 Operation / Object / Rows / Cost / Node Type
    • 树形 / 图形:按执行计划层级展示节点,按操作类型着色(全表扫描红、索引绿、JOIN 紫等)
    • 成本过高才建议加索引,数据量很少则提示无需建立

🎨 设计逻辑

场景 行为
未配置数据源 索引建议全部橙色(无法核实是否已存在),可复制 CREATE INDEX;执行计划页提示"请先配置数据源"
已配置数据源 索引区分灰色(已存在)/ 橙色(缺失);额外给出冗余索引、大小表驱动建议;可用执行计划分析
手工/扫描页头 配置数据源后顶部显示"✅ 已配置数据源,可进行深度优化"

🖼️ 功能截图

✏️ 手工优化

sql_yh_sd.png

🔍 扫描优化

sql_yh_zd.png

🔗 配置数据源

sql_yh_sjy.png

📊 SQL 执行计划

sql_yh_zx.png

🛠️ 技术栈

组件 技术
后端 Spring Boot 3.2, JSqlParser 4.9, HikariCP, OkHttp 4.12
前端 Vue 3 CDN + Element Plus CDN(纯 HTML,无构建工具)
AI 接口 阿里云百炼 OpenAI 兼容接口(qwen-max)
数据库驱动 MySQL Connector/J、PostgreSQL JDBC、Oracle JDBC;达梦需手动加入
构建 Maven, JDK 17+

🚀 快速开始

cd sql-optimizer-tool

# 编译打包
mvn clean package

# 运行(默认端口 8090)
java -jar target/sql-optimizer-tool-1.0.0.jar

访问:http://localhost:8090

配置 AI(可选)

export AI_API_KEY=你的百炼API_Key

不配置 API Key 也可正常使用索引分析(仅 AI 深度改写不可用)。

📊 支持的数据库(数据源连接)

数据库 类型标识 驱动 默认端口
MySQL mysql MySQL 驱动 3306
Oracle oracle Oracle 驱动 1521
PostgreSQL postgresql PostgreSQL 驱动 5432
达梦 DM dameng 需手动加入(见下) 5236
高斯/openGauss gaussdb PostgreSQL 驱动 5432
人大金仓 KingBase kingbase PostgreSQL 驱动 54321
OceanBase oceanbase MySQL 驱动 2881
TiDB tidb MySQL 驱动 4000

达梦(DM)驱动说明

达梦 JDBC 驱动未发布到 Maven 中央仓,需手动引入:

  1. 从达梦安装目录获取 DmJdbcDriver18.jar
  2. 安装到本地 Maven 仓库:
    mvn install:install-file -Dfile=DmJdbcDriver18.jar \
      -DgroupId=com.dameng -DartifactId=DmJdbcDriver18 \
      -Dversion=8.1 -Dpackaging=jar
    
  3. pom.xml 中加入对应依赖后重新打包,或启动时用 -cp 追加该 jar。

📡 API 接口

接口 方法 说明
/api/optimize POST 优化单条 SQL
/api/optimize/batch POST 批量优化多条 SQL(分号分隔)
/api/status GET 全局状态(是否已配数据源 / AI)
/api/explain POST 执行计划分析(需数据源)
/api/scan POST 扫描项目目录并提取 SQL
/api/scan/replace POST 将优化后的 SQL 替换回源文件(自动 .bak 备份)
/api/scan/dirs GET 浏览服务器目录树(供目录选择器使用)
/api/datasource/connect POST 测试并连接数据源
/api/datasource/disconnect POST 断开数据源
/api/datasource/status GET 当前数据源状态

📁 项目结构

sql-optimizer-tool/
├── docs/                                     # 功能截图
├── src/main/java/com/sqloptimizer/
│   ├── SqlOptimizerApplication.java         # 启动类(排除默认数据源自动配置)
│   ├── common/                              # Result / IndexSuggestion / OptimizeResult
│   │                                        # ExplainResult / ExplainRow / PlanNode
│   │                                        # DataSourceConfig / ScanItem
│   ├── config/                              # 全局异常处理
│   ├── controller/
│   │   ├── OptimizeController.java          # 优化 + 批量 + 状态
│   │   ├── ExplainController.java           # 执行计划
│   │   ├── ScanController.java              # 项目扫描 + 替换 + 目录浏览
│   │   └── DataSourceController.java        # 数据源配置
│   └── service/
│       ├── IndexAnalyzerService.java        # 索引候选列提取(规则引擎核心)
│       ├── SqlOptimizerService.java         # 优化编排:组合规则/数据源/AI
│       ├── ProjectScanService.java          # 项目扫描与原地替换
│       ├── DataSourceService.java           # 连接/索引检测/大小表/冗余索引
│       ├── ExplainService.java              # EXPLAIN 执行、计划树解析与成本评估
│       └── AiService.java                   # 百炼 AI 服务
└── src/main/resources/
    ├── application.yml
    └── static/
        ├── index.html         # 入口(跳转手工优化)
        ├── common.css         # 共享样式
        ├── manual.html        # 手工优化
        ├── auto.html          # 扫描优化
        ├── explain.html       # SQL 执行计划
        ├── datasource.html    # 配置数据源
        ├── donate.html        # 打赏支持
        └── image/
            └── ds.png         # 打赏二维码

📝 注意事项

  1. 数据源为内存态:配置的连接仅保存在内存中,应用重启后需重新配置;密码不会回传前端。
  2. 执行计划安全:PostgreSQL 系使用 EXPLAIN(不含 ANALYZE),不会真实执行写操作。
  3. 执行计划视图:MySQL 8 通过 EXPLAIN FORMAT=JSON 解析出结构化计划树(表格/树形/图形);其他数据库回退为原始表格。
  4. 索引匹配规则:检测已存在索引时采用"最左前缀匹配",与数据库索引使用逻辑一致。
  5. 成本阈值:执行计划成本 ≥10000 判为偏高才给索引建议;预估扫描行数 ≤500 判为数据量小,提示无需建索引(阈值可在 ExplainService 调整)。

⭐ Star 支持

觉得好用的话,欢迎给项目点个 Star 支持一下,这是对作者最大的鼓励!

📄 项目地址

https://github.com/vfaner/sql-optimizer-tool

相关文章
|
19天前
|
Linux iOS开发 MacOS
实用小工具:端口卫士
一款跨平台端口监控工具,界面美观(无边框+磨砂玻璃),支持Win/macOS/Linux。实时扫描监听端口,显示应用名、PID、端口及资源占用,并支持一键终止进程。内置搜索、自动刷新、权限适配与多支付赞助入口。
152 0
|
23天前
|
人工智能 运维 API
2026年OpenClaw一键部署教程:阿里云环境搭建与百炼API密钥完整配置
OpenClaw是一款轻量化、高自由度的开源AI智能体工具,具备自主任务拆解、自动化工程处理、多轮对话推理、代码辅助开发等能力,可长期托管运行,适配个人开发、项目运维、智能办公等场景。依托阿里云服务器实现一键部署,搭配百炼大模型API密钥完成模型对接,能够快速搭建全天候在线的专属云端AI智能助手。整套部署配置流程适配零基础用户,步骤标准化、落地难度低,2026年最新部署规则与密钥适配体系更加完善,可稳定兼容百炼全系大模型与各类订阅方案。
72 1
|
21天前
|
人工智能 运维 数据可视化
阿里云百炼全链路对接实操指南:账号、API、订阅、应用开发完整教程
阿里云百炼是面向个人开发者、中小企业、大型政企打造的一站式大模型MaaS服务底座,整合自研通义千问全系列模型,同时兼容DeepSeek、Kimi等多款第三方优质开源与商用大模型,统一提供模型推理、API调用、包月订阅、智能体开发、可视化工作流、私有知识库、MCP工具集成等全栈AI能力。整套平台打通从账号开通、密钥创建、算力付费、模型调用到应用上线完整链路,提供零代码、低代码、高代码三层开发模式,兼顾零基础业务人员与专业研发团队,2026年迭代后完善计费管控、权限隔离、数据合规体系,成为国内落地通用AI、编码智能、私有知识库应用的主流服务平台。下文按照前置账号准备、三类接入计费方案、代码调用实操
168 0
|
23天前
|
弹性计算 人工智能 运维
阿里云ECS部署OpenClaw完整教程:百炼API密钥配置与从零落地实操
OpenClaw是一款轻量化、可多渠道接入的开源智能代理框架,能够对接主流大模型,实现自动化问答、任务调度、消息处理等能力。依托阿里云ECS云服务器部署OpenClaw,可以实现全天候稳定在线、不受本地设备限制,搭配百炼大模型API调用能力,能够快速搭建属于个人或团队的云端AI智能服务。整套部署流程适配新手用户,操作标准化、门槛低,本文完整梳理ECS环境准备、端口配置、OpenClaw部署、百炼API密钥创建、模型对接与故障排查全流程。
68 0
|
23天前
|
网络协议 应用服务中间件 网络安全
阿里云SSL证书自动续签与部署完全指南:从托管服务到开源工具全方案解析
本文系统性地剖析了阿里云SSL证书自动续签与部署的完整技术方案。随着SSL证书有效期普遍缩短至一年甚至三个月,手动管理证书已成为运维痛点。文章首先介绍阿里云数字证书管理服务V2.0的托管服务——通过购买证书时开启托管、配置域名免验证授权、创建云产品部署任务,即可实现证书全生命周期自动化。随后深入讲解acme.sh这一开源ACME客户端的安装、阿里云DNS API配置、证书签发与自动续期Cron任务设置,并提供Nginx配置示例。进一步探讨基于阿里云OpenAPI的自定义脚本方案,展示Python SDK调用示例。还介绍了函数计算、Certimate等高级自动化工具。最后详细讨论ECS可信实例一
|
2月前
|
运维 应用服务中间件 网络安全
宝塔服务器报错全覆盖排查指南:新手不用盲猜,按步骤快速修复网站/面板故障
宝塔面板本身稳定性极强,绝大多数报错并非面板BUG,而是端口策略、系统资源、网站代码、权限配置四类问题。 运维排查核心思想:先外网,后内网;先系统,后服务;先日志,后重装。遇到报错不要慌乱,按照本文流程一步步定位,无需专业运维功底,也能独立
581 6
|
2月前
|
人工智能 缓存 自然语言处理
阿里云百炼Token Plan详解:Credits计量逻辑、AI模型矩阵及免费Tokens获取与使用指南
2026年,阿里云百炼平台推出的Token Plan订阅服务,以统一Credits点数计费为核心,整合文本生成、图像生成、多模态理解等全品类AI模型,兼容主流编程与智能体工具,为个人开发者、团队及企业提供预算可控、多模型通用、稳定高效的AI使用方案。该服务彻底告别传统按量计费的账单波动,通过固定包月额度实现成本精准管控,同时开放高额免费Tokens福利,新用户零门槛即可体验全量模型能力。本文将从Token Plan核心定义、Credits计费机制、支持的AI模型矩阵、免费Tokens领取与使用规则、实操配置及常见问题等维度,进行全面深度解析,帮助用户快速掌握并高效使用Token Plan服务。
555 2
|
2月前
|
安全 JavaScript 前端开发
《ZAKU渗透论:卓伊凡的2026渗透工程》第四章:Web攻击原理(下)——XSS、CSRF、文件上传漏洞
本章详解XSS、CSRF与文件上传三大Web漏洞:XSS通过注入恶意脚本窃取Cookie;CSRF伪造已登录用户请求执行非自愿操作;文件上传漏洞则因校验缺失致服务器被控。三者共性——过度信任用户输入。(239字)
416 10
|
2月前
|
人工智能 IDE BI
阿里云百炼Token Plan与Coding Plan全维度对比:计费、功能与适用场景深度解析
阿里云百炼平台提供Token Plan与Coding Plan两种订阅方案,二者定位、计费逻辑与能力边界完全不同,是面向不同用户群体与业务场景的差异化服务。Token Plan是全场景通用订阅方案,以Credits为统一计量单位,覆盖编程、写作、对话、知识问答、智能体自动化、多模态交互等所有AI能力,适配个人、团队与企业全场景需求。Coding Plan则是编程场景专属订阅方案,按调用次数计费,仅聚焦代码生成、调试、补全等开发场景,面向个人开发者与轻度编程用户。
256 0
|
2月前
|
存储 编解码 运维
2026年阿里云轻量应用服务器配置价格表与性能测评
阿里云轻量应用服务器是面向入门级用户、个人开发者及小微企业的一站式云服务产品,主打**开箱即用、极简运维、高性价比**,整合计算、存储、网络资源于一体,无需复杂配置即可快速部署应用。2026年产品全面升级,所有规格默认配备**200M峰值带宽+不限流量**,彻底告别流量焦虑,同时提供丰富的应用镜像与简化控制台,大幅降低云计算使用门槛。
602 0