好用的SQL优化工具源码(部署简单)

发布时间:2026/7/13 8:37:31

好用的SQL优化工具源码(部署简单) 项目简介SQL 优化工具是一个基于 Spring Boot 3 的 Web 应用针对给定的查询 SQL 进行智能优化分析给出合适的索引建议并支持连接真实数据源做深度优化与执行计划分析。核心特性索引建议颜色区分—— 已建立的索引以灰色删除线展示尚未建立的以橙色展示均支持一键复制。✨ 主要特性智能索引建议基于 JSqlParser 解析 AST从 WHERE 等值/范围条件、JOIN ON、ORDER BY、GROUP BY 中提取候选列生成合理的组合索引颜色区分状态已存在灰色、缺失/未核实橙色一目了然支持复制粘贴✏️手工优化粘贴单条 SQL 即时分析扫描优化扫描项目目录提取 MyBatis XML、Java 代码中的 SQL 字符串、注解中的 SQLSelect/Insert/Update/Delete/Query逐条分析并支持一键原地替换自动.bak备份AI 深度优化可选集成阿里云百炼通义千问对 SQL 智能改写配置数据源可选配置后可进行——索引存在性检测区分灰/橙冗余索引检测给出 DROP 建议大小表驱动判断小表驱动大表建议SQL 执行计划连接数据源后执行 EXPLAIN提供表格 / 树形 / 图形三种视图类 DBeaver表格结构化列 Operation / Object / Rows / Cost / Node Type树形 / 图形按执行计划层级展示节点按操作类型着色全表扫描红、索引绿、JOIN 紫等成本过高才建议加索引数据量很少则提示无需建立 设计逻辑场景行为未配置数据源索引建议全部橙色无法核实是否已存在可复制CREATE INDEX执行计划页提示请先配置数据源已配置数据源索引区分灰色已存在/ 橙色缺失额外给出冗余索引、大小表驱动建议可用执行计划分析手工/扫描页头配置数据源后顶部显示✅ 已配置数据源可进行深度优化️ 功能截图✏️ 手工优化 扫描优化 配置数据源 SQL 执行计划️ 技术栈组件技术后端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 快速开始cdsql-optimizer-tool# 编译打包mvnclean package# 运行默认端口 8090java-jar target/sql-optimizer-tool-1.0.0.jar访问http://localhost:8090/配置 AI可选exportAI_API_KEY你的百炼API_Key不配置 API Key 也可正常使用索引分析仅 AI 深度改写不可用。 支持的数据库数据源连接数据库类型标识驱动默认端口MySQLmysqlMySQL 驱动3306OracleoracleOracle 驱动1521PostgreSQLpostgresqlPostgreSQL 驱动5432达梦 DMdameng需手动加入见下5236高斯/openGaussgaussdbPostgreSQL 驱动5432人大金仓 KingBasekingbasePostgreSQL 驱动54321OceanBaseoceanbaseMySQL 驱动2881TiDBtidbMySQL 驱动4000达梦DM驱动说明达梦 JDBC 驱动未发布到 Maven 中央仓需手动引入从达梦安装目录获取DmJdbcDriver18.jar安装到本地 Maven 仓库mvn install:install-file-DfileDmJdbcDriver18.jar \-DgroupIdcom.dameng-DartifactIdDmJdbcDriver18 \-Dversion8.1-Dpackagingjar在pom.xml中加入对应依赖后重新打包或启动时用-cp追加该 jar。 API 接口接口方法说明/api/optimizePOST优化单条 SQL/api/optimize/batchPOST批量优化多条 SQL分号分隔/api/statusGET全局状态是否已配数据源 / AI/api/explainPOST执行计划分析需数据源/api/scanPOST扫描项目目录并提取 SQL/api/scan/replacePOST将优化后的 SQL 替换回源文件自动.bak备份/api/scan/dirsGET浏览服务器目录树供目录选择器使用/api/datasource/connectPOST测试并连接数据源/api/datasource/disconnectPOST断开数据源/api/datasource/statusGET当前数据源状态 项目结构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# 打赏二维码 注意事项数据源为内存态配置的连接仅保存在内存中应用重启后需重新配置密码不会回传前端。执行计划安全PostgreSQL 系使用EXPLAIN不含 ANALYZE不会真实执行写操作。执行计划视图MySQL 8 通过EXPLAIN FORMATJSON解析出结构化计划树表格/树形/图形其他数据库回退为原始表格。索引匹配规则检测已存在索引时采用最左前缀匹配与数据库索引使用逻辑一致。成本阈值执行计划成本 ≥10000 判为偏高才给索引建议预估扫描行数 ≤500 判为数据量小提示无需建索引阈值可在ExplainService调整。⭐ Star 支持觉得好用的话欢迎给项目点个Star支持一下这是对作者最大的鼓励 源码获取https://github.com/vfaner/sql-optimizer-tool

相关新闻