MySQL技术文章
-
MySQL 不可见索引可通过单语句提示、会话开关或表级 VISIBLE 重新参与计划选择。本文区分三种作用域,给出原设置保留、计划对照和显式回退写法,说明候选索引并不保证最终命中。124 收藏 -
MySQL JSON_TABLE 用 NESTED PATH 展开 JSON 数组时,没有子项的外层对象不会自动消失,而是保留一行并把嵌套列补成 NULL。本文用订单和明细示例说明外连接语义、WHERE 过滤边界以及兄弟嵌套路径的行数规则。231 收藏 -
MySQL 函数索引不命中时,先对照 SHOW CREATE TABLE 中的表达式,再统一 WHERE 的函数、JSON 路径和类型转换,最后用 EXPLAIN 检查 key、key_len 与 rows。335 收藏 -
MySQL JSON_VALUE 默认会让路径不存在和 JSON null 都表现为 SQL NULL。本文用三类输入基线、ON EMPTY、ON ERROR 与 JSON_CONTAINS_PATH 说明如何区分 missing、json-null、present,并处理类型转换错误。488 收藏 -
MySQL WITH ROLLUP 会额外生成小计和总计行,不能只看 NULL 判断层级。本文用 GROUPING() 区分原始 NULL 与汇总 NULL,并给出稳定排序与 ONLY_FULL_GROUP_BY 边界。483 收藏 -
MySQL CTE 不一定会被物化:优化器可能把它合并到外层查询,也可能建立内部临时表。本文用 MERGE、NO_MERGE 和 EXPLAIN FORMAT=JSON 说明怎样判断计划选择。315 收藏 -
MySQL 多值索引没有可直接设置的每行数组元素数参数。本文区分业务长度约束与 65221 字节引擎硬边界,演示 JSON_LENGTH、CHECK 和超限后的拆表判断。166 收藏 -
MySQL 8.4 可以用 EXPLAIN FORMAT=JSON INTO 将 JSON 执行计划保存到当前会话变量,再用 JSON_EXTRACT 读取表名、访问类型、索引和估算字段;需要跨会话比较时再写入 JSON 列留档。299 收藏 -
MySQL 可用 WINDOW 子句集中相同窗口定义,并通过命名窗口复用分区和排序。本文给出累计与最近三行统计示例,说明相同排序、不同窗口帧、最终展示顺序及实际排序成本之间的区别。198 收藏 -
MySQL sys schema 适合做诊断入口,真正的 InnoDB 表空间容量可从 INFORMATION_SCHEMA.FILES 读取,再用 sys.format_bytes() 输出可读的已用与空闲空间。122 收藏 -
MySQL InnoDB 的 READ COMMITTED 可减少部分范围操作的间隙锁影响,但不会消除同记录写冲突。本文通过范围插入与已有记录更新的两会话示例,说明一致性取舍、下一事务设置和回滚清理责任。400 收藏 -
MySQL JSON_MERGE_PATCH 按 RFC 7396 语义合并 JSON 文档:同名键覆盖、JSON null 删除成员、嵌套对象递归合并,数组和标量则有明确边界。267 收藏 -
围绕二级索引变更说明 MySQL 在线 DDL 的算法、锁级别、长事务、临时空间与执行窗口规划。258 收藏 -
用 MySQL optimizer_trace 追踪 range_optimizer 的候选范围与决策原因,掌握会话配置、结果读取和内存边界。128 收藏 -
大 IN 列表的成本不只取决于参数数量,还取决于范围优化器要评估的组合规模。本文用 EXPLAIN、Warning 3170 和 optimizer trace 定位退化,并比较拆分查询与临时表 JOIN。244 收藏