STATIC LINT / 44 · NO DB CONNECTION

SQL 慢查询
怎么优化?

一句话说明:把 SQL 粘进来,本页按静态写法规则标出常见的索引失效片段,逐条给改写方向与 EXPLAIN 字段读法;组合索引还能按你填的列顺序核对最左前缀。

不连数据库 不生成执行计划 不输出 DDL
检查规则13 条
  • R1前导通配符 LIKE '%x'
  • R2列上函数 DATE(col)
  • R3列上运算 col + 1
  • R4隐式类型转换
  • R5OR 混用与否定条件
  • R6大偏移分页与随机排序

规则命中只是写法提示,是否真的影响性能,要看真实执行计划与数据分布。

query.sql 1 行
诊断清单尚未运行

粘贴 SQL 后点「开始静态诊断」。每条命中会给出原文片段、原因与改写方向;页面不会执行这条 SQL。

01

组合索引最左前缀核对

按你填的列顺序判定

填好两侧列顺序后点「核对可用列」。

02

EXPLAIN 字段怎么看

通用读法,不是本次查询结果
字段看什么常见值 / 提示
type访问方式,粗略反映查找效率system → const → eq_ref → ref → range → index → ALL;出现 ALL 通常要复核索引
key优化器实际选用的索引为 NULL 时说明没用上索引,与 possible_keys 不一定一致
rows预估需要扫描的行数估算值,受统计信息影响,不能当真实耗时
filtered按条件过滤后剩余的百分比估计与 rows 相乘可粗略估计返回量,同样是估算
Extra额外执行信息Using index 覆盖索引;Using filesort / Using temporary 需结合数据量判断

本页不发起数据库连接,也不会为你生成 EXPLAIN 结果;上表是字段含义的通用说明。

03

多条 SQL 批量诊断与文本转义

按分号或换行拆分
清洗 / 转义 预览:—
#SQL 摘要命中数最高级别命中规则
04

整理成给 DBA 的复核问题(AI)

可选 · 先人机验证

基于本页已经生成的本地诊断摘要,整理成复核顺序与需要补收集的信息。点击先弹出点选验证码;AI 不执行 SQL、不编造 EXPLAIN 结果、不生成 DDL、不声称性能提升幅度。

先改写法,再谈加索引

SQL 慢查询怎么优化,第一步通常是确认「索引是不是被写法挡住了」。索引失效情况里最常见的是前导通配符:LIKE '%关键词' 无法按 B-tree 有序定位,改成后缀匹配、全文索引或专门的检索方案要按业务决定。

第二类是对索引列做函数或运算,例如 DATE(created_at) = '2026-11-01'。把函数移到常量侧、写成左闭右开的范围条件,往往比新增一列冗余字段更先考虑。隐式类型转换也常被忽略:字符串列与无引号数字比较,可能导致索引失效,本页按你标注的字段类型做提示。

最左前缀原则说的是组合索引 (a, b, c) 的有序定位从 a 开始:WHERE 跳过 a 通常无法按该索引有序查找;遇到范围条件后,其后的列一般也不再用于有序定位,是否生效以执行计划为准。sql 索引怎么建还要看区分度、写入成本与覆盖索引,本页不生成 DDL。

explain 怎么看?先看 type、key、rows 与 Extra,但 rows 是估算值,不能当真实耗时。本页支持多条 SQL 批量诊断与引号、HTML、字符串字面量转义导出,全部是慢查询静态检查,不连接数据库,以实际执行计划与压测结果为准。

🧮静态检查口径与边界 提示写法,不代替实测

静态写法检查 只按你粘贴的 SQL 文本匹配常见失效模式,不连数据库、不解析真实执行计划。
最左前缀 组合索引 (a,b,c) 可用到 a;若 WHERE 跳过 a,通常无法按该索引有序定位,可用列数由条件列顺序决定。
EXPLAIN 怎么看 重点看 type、key、rows、Extra;rows 是估算值,Using filesort 与 Using temporary 需结合数据量判断。
改写示例 页面给的是写法方向(如把列上函数移到常量侧),不是可直接上线的 SQL,需按字段类型与业务复核。
边界说明 不生成 DDL、不预测耗时、不报扫描行数;以实际 EXPLAIN 与压测结果为准。

这个工具解决什么问题

很多慢查询不是没建索引,而是写法让索引用不上。本页先本地检查写法,再让你填组合索引列顺序与 WHERE 条件列,逐条说明可用到哪一列。

三条对齐原则

  • 先改写法,再谈加索引:前导通配、列上函数、隐式转换都能先在本地改。
  • 索引列顺序要手填:页面不推断表结构,最左前缀判定完全依据你填的顺序。
  • 结果是提示不是结论:真实执行计划取决于数据分布与优化器,必须实测。

按这几步用

  1. 粘贴 SQL:把待查的 SELECT 文本粘进编辑区,可一次粘贴多条。
  2. 填索引信息:填组合索引列顺序与 WHERE 条件用到的列。
  3. 开始诊断:列出命中的失效写法、命中片段与改写方向。
  4. 看最左前缀:输出组合索引可用到哪一列,标出跳过的列。
  5. 导出报告:导出 CSV / JSON,或把 SQL 转成字符串字面量与 CSV 转义文本。

小提示

诊断基于正则与括号配平的静态匹配,不执行 SQL;大小写、注释与换行会先做归一化,复杂嵌套子查询请拆成单条再查。

更新记录

  • v1.0 2026-11-10 工具上线:失效写法静态检查、最左前缀核对、EXPLAIN 字段读法与批量诊断。

常见问题

索引失效情况有哪些?

常见有前导 % 模糊匹配、对索引列做函数或运算、字符串列与数字比较造成隐式转换、OR 混入无索引列、组合索引跳过最左列、否定条件与大偏移分页等。

explain 怎么看?

先看 type 的访问方式、key 实际用到的索引、rows 的估算扫描行数与 Extra 里的 Using filesort / Using temporary;rows 是估算值,不能当真实耗时。

sql 索引怎么建?

本页不生成建表语句。它只按你填的组合索引列顺序与 WHERE 条件列,说明最左前缀可用到哪一列,具体索引设计要看数据分布与写入成本。

会连接我的数据库吗?

不会。页面不发起任何数据库连接,也不执行 SQL 或生成执行计划;AI 整理同样只接收本地诊断摘要。

改写示例能直接用吗?

不能。示例只提示写法方向,例如把列上函数移到常量侧或用范围条件替代前导通配,字段类型、NULL 语义与业务条件需自行复核。

💬 留言板 0

全部留言需审核通过后展示
💬

还没有留言,来抢沙发吧!

✍️ 说点什么
0 / 500
图形验证码

资料版本 2026-11。本页仅对 SQL 文本做正则与结构层面的静态检查,不连接数据库、不执行语句、不生成执行计划或 DDL;EXPLAIN 字段为通用说明,不同数据库版本存在差异。改写示例是方向提示,须按字段类型、NULL 语义与业务条件复核,以实际执行计划和压测结果为准。

👣 做完这一步,顺便看看
🧰 乱码修复 / 文本编码转换 在线乱码修复工具:上传乱码文本文件或粘贴乱码字符串,用 UT… → 💻 假装工作模拟器 老板走近工位的一瞬间,点一下就能从摸鱼切回正经工作界面。代码… → 🧰 IP / 子网掩码计算器 在线子网计算器:输入 IP 地址与掩码(CIDR 前缀或点分… → ⏰ 下班倒计时 打工人专属下班计算器:实时倒计时、进度环、已上班时长、加班时… →
全部工具 →