MySQL技术文章
-
MySQL 时间范围查询没有用上索引,通常要从时间列是否被函数包裹、EXPLAIN 计划、复合索引顺序和优化器成本判断。本文用 DATETIME 半开区间给出排查与修复方法。139 收藏 -
MySQL 大表使用 LIMIT offset, size 翻到后页时,会先扫描并丢弃大量记录。本文用稳定排序、联合索引和 keyset pagination 改造查询,并说明倒序、重复时间戳和末页的处理方式。490 收藏 -
MySQL 的 UPDATE 和 DELETE 也可以先用 EXPLAIN 观察读取路径。本文从 type、key、rows、filtered 和 JSON 计划入手,说明怎样识别全表扫描、估算偏差与写入前的范围风险。343 收藏 -
MySQL 递归 CTE 的层级停止条件应写在递归成员的 WHERE 中,用 depth 控制下一层是否生成,再用递归深度和执行时间限制兜底。392 收藏 -
MySQL EXPLAIN 的 rows 是优化器估算值,不等于实际扫描量。本文用 EXPLAIN ANALYZE 对照 actual rows、loops 和耗时,再通过 ANALYZE TABLE、直方图与索引检查定位偏差。419 收藏 -
MySQL CTE 可以把复杂筛选或聚合子查询命名后重复引用,本文用订单统计场景说明 WITH 的组织方式、列名与作用域边界,以及合并和物化对执行计划的影响。150 收藏 -
Using filesort 只说明 MySQL 需要额外排序,不等于一定要加索引。本文从 EXPLAIN 的 rows、LIMIT、排序字段、索引覆盖和 Sort_merge_passes 入手,给出判断是否需要优化的顺序。438 收藏 -
用 JSON_SEARCH 在限定路径内按 % 和 _ 搜索字符串,并正确处理 one/all、转义字符和 NULL 返回。288 收藏 -
MySQL JSON 字段建立生成列索引后仍可能不命中,关键在于查询表达式与生成列定义是否一致、结果类型是否一致,以及 JSON 字符串是否使用 JSON_UNQUOTE。本文用 EXPLAIN、possible_keys 和 key 给出排查顺序。155 收藏 -
MySQL JSON_EXTRACT 返回 JSON 字符串,展示文本可用 JSON_UNQUOTE 或列的 ->> 写法。本文比较返回契约,给出原创只读查询,区分路径缺失、JSON null 与字符串 null,并说明序列化边界。440 收藏 -
MySQL JSON_STORAGE_FREE 只有在 JSON 列通过 JSON_SET、JSON_REPLACE 或 JSON_REMOVE 进行合适的部分更新后,才可能返回正数。本文用可复用的 SQL 说明如何判断空闲空间、为什么结果为 0,以及如何结合 JSON_STORAGE_SIZE 排查。347 收藏 -
用 MySQL 的 SUM OVER 按客户分组计算订单累计金额,保留每条明细行,并说明稳定排序、窗口帧以及最终结果排序之间的区别。172 收藏 -
数据库 · MySQL | 2天前 | InnoDB · 故障排查 · MySQL教程 · mysql innodb mysqldump 二进制日志 物理备份 single-transaction 一致性备份
MySQL InnoDB 一致性备份的关键是建立可解释的事务或物理快照边界。本文按表引擎、备份方式、备份锁、文件系统快照和二进制日志分层排查,给出纯 InnoDB 逻辑备份与物理备份的选择清单。270 收藏 -
数据库 · MySQL | 2天前 | 连接池 · 故障排查 · MySQL教程 · mysql 连接池 wait_timeout database/sql SetConnMaxIdleTime SetConnMaxLifetime 空闲连接 PingContext
MySQL 连接池空闲连接失效,通常是服务端、代理或网络设备先关闭了空闲连接,应用在下一次复用时才发现。本文按时间边界排查 wait_timeout,并用 Go database/sql 的空闲时间、生命周期、PingContext 和 Stats 给出可执行处理方案。350 收藏 -
数据库 · MySQL | 2天前 | MySQL · 数据库 · csv · 数据导入 · CSV导入 MySQL LOAD DATA LOAD DATA LOCAL INFILE MySQL批量导入
MySQL LOAD DATA 读取 CSV 时,关键不是只写一条 SQL,而是对齐文件位置、字符集、分隔符、引号、换行符和目标列。本文给出 LOCAL 与非 LOCAL 的选择、列映射、清洗和结果核对方法。307 收藏