MySQL技术文章
-
MySQL 合并多个查询结果时,UNION 默认删除重复整行,UNION ALL 保留所有行。本文从业务语义、列位置、整行去重以及 ORDER BY、LIMIT 的作用范围说明如何选择,避免误删明细或为不必要的去重增加开销。290 收藏 -
用一组可复现的 MySQL 8.4 示例,讲清 INTERSECT 与 EXCEPT 的 DISTINCT/ALL、列数和类型边界,以及 NULL、优先级、ORDER BY 的验收方法。287 收藏 -
MySQL InnoDB 改用 READ COMMITTED 后,主要减少非唯一索引范围上的间隙锁与不匹配行的锁保留;普通 SELECT、锁定读、外键检查和重复键检查仍需分开判断。284 收藏 -
MySQL LOAD DATA 导入含换行文本时,要分清字段内的\n转义、CSV 引号包围的真实换行,以及记录本身的行结束符。本文按源文件形态说明 TERMINATED BY、ENCLOSED BY、ESCAPED BY 和 LOCAL 的边界,并给出导入后的核对清单。284 收藏 -
用 performance_schema.events_statements_summary_by_digest 按语句模式聚合慢 SQL,区分总耗时、平均耗时、扫描量与 digest 容量边界。284 收藏 -
MySQL 会在派生表合并与物化之间做选择,但包含窗口函数的派生表不能走合并路径。本文用订单排名查询拆开 derived_merge、内部临时表、过滤位置与 EXPLAIN 验证边界。283 收藏 -
旧表字符集迁移不能只改一个默认值。本文以 utf8mb4 为目标,说明如何盘点表列与连接设置、选择排序规则、执行 ALTER TABLE、处理显式列定义并安排迁移后的核对与回滚。281 收藏 -
同一条 MySQL 查询使用预编译参数后可能出现不同执行计划。本文从参数类型、隐式转换、索引可用性和 EXPLAIN 复核入手,给出可回归的排查与改写方法。280 收藏 -
MySQL 隐形索引适合用来验证一个索引是否仍被优化器需要。本文以订单查询为例,演示如何将索引设为不可见、用 EXPLAIN 对比计划、观察线上指标,并在结果不理想时快速恢复。278 收藏 -
MySQL 8.4 的 INSERT 语法没有通用的 RETURNING 子句。本文用订单写入场景解释为什么不能把 PostgreSQL 式写法直接搬过来,并给出 LAST_INSERT_ID、事务内 SELECT 和多行写入的核对边界。278 收藏 -
数据库 · MySQL | 3星期前 | MySQL · 索引 · 数据库 · 执行计划 · 性能排查 · 执行计划 cost_info MySQL EXPLAIN FORMAT=JSON rows_examined_per_scan 索引选择
用一个订单查询拆解 MySQL EXPLAIN FORMAT=JSON:怎么看 cost_info 和 rows_examined_per_scan,如何把估算行数、过滤条件与索引选择对上,避免只盯着 type=ALL 下结论。276 收藏 -
MySQL InnoDB 事务死锁发生后,不能只看一条报错就改重试。本文用订单与库存更新场景还原锁等待环路,演示如何读取 SHOW ENGINE INNODB STATUS、关联 performance_schema、判断受害事务并验证修复是否真正降低死锁风险。275 收藏 -
按月增长的订单或日志表,不必每次归档都全表搬运。本文用 MySQL 8.4 RANGE 分区示例,说明分区键设计、分区裁剪检查、按月新增与删除边界,以及上线前的回滚和验收方法。273 收藏 -
用一个可复查的导出命令讲清 mysqldump --single-transaction 的一致性边界:InnoDB 为什么能在不锁表的情况下读取同一快照,MyISAM 与 DDL 操作又会带来哪些风险。273 收藏 -
从递归终止条件、循环数据和 cte_max_recursion_depth 三个方向排查 MySQL CTE 超过默认深度的问题,并给出可回滚的保护配置。270 收藏