MySQL技术文章
-
金额字段优先使用 DECIMAL,但 DECIMAL(10,2) 不是万能答案。本文用 M、D、整数位和 SQL mode 拆解字段范围,给出建表与边界检查示例,帮助你按业务上限选择精度和小数位。183 收藏 -
MySQL 存表情报错通常不是只改数据库默认字符集就够了,还要检查目标列和应用连接是否统一使用 utf8mb4。本文按检查、转换、连接配置和回滚边界给出一套可执行处理方法。207 收藏 -
MySQL 用 LEFT JOIN 做关联统计时,应 COUNT 右表非空主键,并把右表筛选条件放进 ON,才能列出没有明细的主体并返回 0。477 收藏 -
MySQL 的 NOT IN 查询突然查不到数据,常见原因是列表或子查询结果含有 NULL。本文从三值逻辑解释这个现象,并用 NOT EXISTS、IS NULL 和过滤 NULL 的写法建立可检查的排除条件。413 收藏 -
MySQL 按天统计时,直接按业务表分组会丢掉没有记录的日期。本文用 WITH RECURSIVE 生成日期序列,再 LEFT JOIN 订单数据并用 COALESCE 补 0,同时处理时间索引和递归上限。177 收藏 -
使用 MySQL JSON_TABLE() 配合 $[*] 将 JSON 数组展开为多行,讲清 PATH、FOR ORDINALITY、NESTED PATH、ON EMPTY 和 ON ERROR 的写法与边界。490 收藏 -
MySQL 计算相邻记录时间差的通用写法:先用 LAG() 取上一条时间,再用 TIMESTAMPDIFF() 计算秒或分钟,并处理分组、首行、并列时间和 NULL。176 收藏 -
用 ROW_NUMBER 为组内记录编号,演示 MySQL 分组取最新整行的写法,并说明 MAX 加回表、并列时间和索引复查要点。423 收藏 -
MySQL 深分页变慢,通常不是 LIMIT 取几十行的问题,而是 OFFSET 让服务器先定位并丢弃前面的大量记录。本文用稳定联合排序和游标条件改写下一页查询,并说明如何用 EXPLAIN 判断索引是否真正接住了边界。405 收藏 -
MySQL JSON 多值索引适合优化数组成员筛选,但不能替代排序索引。本文用 MEMBER OF()、EXPLAIN 和生成列说明可用范围。463 收藏 -
MySQL 9.4 将 MD5() 和 SHA1() 标记为弃用,但旧 SQL 的迁移不能一概改成 SHA2()。本文按校验、业务指纹和口令存储区分用途,给出扫描、替换、长度核对与回归检查清单。298 收藏 -
MySQL 9.4 将 back_log 默认值提高到 10000,但它只负责短时连接请求的监听队列,不等于并发连接容量。本文从 back_log、max_connections 与 Linux socket 队列上限三层说明如何核对。488 收藏 -
MySQL 9.4 新增 server_memory 后,默认内存变量会怎样计算?本文用 SHOW VARIABLES 和启动参数拆开它与 temptable_max_ram、innodb_buffer_pool_size 的关系,并说明它为什么不是运行时内存上限。215 收藏 -
MySQL 9.7 的 VECTOR 列能保存向量,但原生向量索引和相似度检索仍在官方架构讨论中。本文拆开 InnoDB 二级索引、隐藏子表、事务一致性和当前落地边界,给出应用侧的稳妥接法。432 收藏 -
解释 MySQL JSON 数组普通索引失效的原因,说明 CAST AS ARRAY 多值索引、三类可优化谓词、类型一致性及覆盖索引和空数组限制。326 收藏