MySQL技术文章
-
澄清多表UPDATE目标行只更新一次的规则,给出按完整业务键聚合和确定性选择最新记录的SQL,区分来源冲突、任务重试与并发封批问题。342 收藏 -
MySQL 的 utf8mb4 只决定字符如何编码,大小写是否视为相等由排序规则 collation 决定。本文用 _ci、_cs、_bin、_ai、_as 后缀拆解选择逻辑,再说明默认规则、列级定义、查询级 COLLATE、唯一索引和 PAD 属性的边界。232 收藏 -
MySQL 分区表是否真的减少了扫描范围,不能只看查询能否返回结果,而要看 EXPLAIN 的 partitions 列。本文用 RANGE 分区示例说明如何对照分区定义、WHERE 条件和执行计划,区分命中一个分区、命中多个目标分区与没有发生分区裁剪。347 收藏 -
MySQL 存储过程需要把参数校验失败和底层异常清楚地交给调用方时,可以用 SIGNAL 设置 SQLSTATE、MESSAGE_TEXT 与 MYSQL_ERRNO。本文从最小示例、handler、诊断区和排查边界说明怎样建立稳定的错误契约。347 收藏 -
数据库 · MySQL | 2星期前 | MySQL · JSON · 数据库 · 查询优化 · mysql 索引 explain JSON json_extract 生成列 JSON_VALUE JSON_UNQUOTE
MySQL 的 JSON 列不能直接按普通列方式建立索引。本文以订单扩展属性为例,把稳定的 JSON 路径提取为有明确类型的生成列,再建立二级索引,并用 EXPLAIN 判断表达式、结果类型和实际索引选择是否匹配。475 收藏 -
MySQL GROUP_CONCAT 结果突然变短时,先检查 group_concat_max_len,再按字节估算选择 SESSION、GLOBAL 或单条语句设置,并同时留意 max_allowed_packet、排序、分隔符和 NULL 行为。443 收藏 -
用 MySQL sys.schema_index_statistics 按读取延迟和读取行数定位高开销索引,解释字段含义、排序方法、写入影响以及 Performance Schema 统计边界。372 收藏 -
MySQL 索引条件下推是否生效,不能只看查询用了索引。本文用 EXPLAIN 的 Extra、EXPLAIN ANALYZE 的 TREE 输出和 optimizer_switch,说明如何确认 Using index condition,并排查没有出现它的常见原因。188 收藏 -
MySQL JSON_TABLE 展开嵌套文档时,关键是把根数组、相对 NESTED PATH、缺失子数组和 FOR ORDINALITY 分开处理。本文用一份多层 JSON 说明如何稳定展开并避免行数误判。165 收藏 -
GeoJSON 只是查询输入格式,真正参与空间索引的是带 SRID 约束的 GEOMETRY 列。本文用 MySQL 8.4 说明如何转换 GeoJSON、创建 SPATIAL INDEX,并用 MBR 候选条件配合精确空间关系完成查询。334 收藏 -
MySQL JSON 列只改一个路径时,使用 JSON_SET、JSON_REPLACE 或 JSON_REMOVE 让更新尽量保留原地部分更新条件,并用 JSON_STORAGE_FREE 和 PARTIAL_JSON 识别存储与复制日志边界。231 收藏 -
MySQL 的窗口函数执行信息不会完整出现在传统 EXPLAIN 表格中。本文从 query_block.windowing.windows[] 入手,说明如何读取函数、排序、临时表和窗口分组字段。311 收藏 -
MySQL JSON 路径索引通过固定路径和标量类型缩小候选行范围。本文对比 JSON_VALUE 函数索引与生成列索引,提供 SQL 示例,解释表达式匹配、选择性和文档读取成本。416 收藏 -
ONLY_FULL_GROUP_BY 并不是要求 SELECT 中每一列都重复写进 GROUP BY,而是要求未聚合列能被分组列唯一确定。本文用主键、非空唯一键、等值连接、单值过滤和表达式边界说明 MySQL 怎样识别函数依赖,以及查询被拒绝时如何安全改写。365 收藏 -
MySQL 不可见索引适合用来做删除前的影响试验。本文从索引边界、可见性切换、执行计划与真实工作负载观察四个方面说明怎样安全回滚,不把试验误当成删除。254 收藏