MySQL技术文章
-
MySQL 查询不走索引,常见原因不是索引不存在,而是 SQL 写法让优化器难以利用索引。函数包列、隐式类型转换、范围过宽和联合索引顺序不匹配,都应该用 EXPLAIN 验证后再改写。189 收藏 -
MySQL 临时表在一个连接里明明存在,换个请求却提示表不存在,通常不是表被误删,而是会话边界或连接池复用方式发生了变化。本文用可复现 SQL 说明临时表的生命周期、连接核对、连接池风险和断线验收。188 收藏 -
数据库 · MySQL | 2星期前 | MySQL · InnoDB · 数据恢复 · Clone Plugin · 实例运维 · MySQL 8.4 Clone Plugin CLONE INSTANCE 实例恢复 捐赠端 接收端
MySQL 8.4 Clone Plugin 适合把一个实例的 InnoDB 数据快速复制到另一个实例,但它不是跨大版本备份工具。本文从插件安装、捐赠端授权、接收端发起 CLONE INSTANCE,到版本、引擎和恢复结果核对,整理一条可回滚的实例级恢复路径。186 收藏 -
用 InnoDB 短事务配合 SELECT ... FOR UPDATE SKIP LOCKED,让多个消费者跳过已锁任务并安全更新状态,同时说明索引、空队列、长任务和异常恢复边界。184 收藏 -
金额字段优先使用 DECIMAL,但 DECIMAL(10,2) 不是万能答案。本文用 M、D、整数位和 SQL mode 拆解字段范围,给出建表与边界检查示例,帮助你按业务上限选择精度和小数位。183 收藏 -
用一个订单、商品和批次的 JSON 示例,说明 MySQL JSON_TABLE 的 NESTED PATH 相对路径、空数组补 NULL、类型处理和重复行排查方法。181 收藏 -
MySQL 按天统计时,直接按业务表分组会丢掉没有记录的日期。本文用 WITH RECURSIVE 生成日期序列,再 LEFT JOIN 订单数据并用 COALESCE 补 0,同时处理时间索引和递归上限。177 收藏 -
MySQL 计算相邻记录时间差的通用写法:先用 LAG() 取上一条时间,再用 TIMESTAMPDIFF() 计算秒或分钟,并处理分组、首行、并列时间和 NULL。176 收藏 -
批量 UPDATE 不要只加 LIMIT:用可推进的索引范围固定每批数据,缩短事务锁持有时间,并为失败重试保留清晰边界。173 收藏 -
MySQL JSON 列不能直接建立普通索引时,可用生成列提取稳定标量再建索引,并通过 EXPLAIN 排查路径、类型和命中问题。172 收藏 -
批量处理订单时,不必因为一条异常记录回滚整批事务。本文用 MySQL SAVEPOINT 设计局部回滚边界,配合错误记录、有限重试和最终提交检查,给出可复现的 SQL 与上线排查清单。170 收藏 -
MySQL JSON_VALUE 对缺少路径和 JSON null 都可能返回 SQL NULL。本文用 JSON_CONTAINS_PATH、JSON_TYPE 和 ON EMPTY 哨兵值区分路径缺失、JSON null、空字符串与 SQL NULL 文档。170 收藏 -
MySQL 的 REGEXP_LIKE 匹配中文时,结果可能受到表达式、模式、列定义和连接排序规则影响。本文给出 utf8mb4 显式配置、分层排查 SQL 与回归样例。169 收藏 -
MySQL 按业务时区统计日期时,不能先对 UTC 时间取 DATE 再转换。本文用 CONVERT_TZ 处理跨午夜记录,并说明半开区间、命名时区表和 NULL 排查方法。168 收藏 -
数据库 · MySQL | 3天前 | MySQL · explain · 性能分析 · JSON执行计划 · 嵌套循环 · mysql 执行计划 EXPLAIN FORMAT=JSON nested_loop 查询成本
MySQL EXPLAIN FORMAT=JSON 的嵌套循环成本要结合 nested_loop、rows_examined_per_scan、rows_produced_per_join 和 cost_info.prefix_cost 阅读。本文用一条 JOIN 示例说明如何找出成本被放大的连接分支,并区分优化器估算与实际耗时。166 收藏