MySQL技术文章
-
MySQL GROUP_CONCAT 结果被截断时,先检查 group_concat_max_len,再按会话、全局和持久配置选择修复方式,并排除字节长度、排序、NULL 与 max_allowed_packet 等边界问题。470 收藏 -
用 InnoDB 短事务配合 SELECT ... FOR UPDATE SKIP LOCKED,让多个消费者跳过已锁任务并安全更新状态,同时说明索引、空队列、长任务和异常恢复边界。184 收藏 -
用 MySQL 生成列保存订单计算结果并建立索引,说明 VIRTUAL 与 STORED 的取舍、表达式匹配规则、JSON_UNQUOTE 用法和 EXPLAIN 检查方法。297 收藏 -
MySQL 的 TIMESTAMP 会按连接时区与 UTC 做转换,DATETIME 则保存字面上的日期时间。本文从瞬时事件、预约时间、连接会话和 2038 年范围几个边界出发,整理跨时区业务的选型和检查方法。384 收藏 -
金额字段优先使用 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 收藏