知其然,知其所以然
MySQL / InnoDB 2026-09-28

隐式类型转换导致索引失效

本机对索引列用字符串字面量真实走Index lookup,cost=0.35;用数字字面量(隐式转换)真实降级为Index scan加Filter,cost=101,扫描了全部1003行。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

字符集与排序规则

本机建了两张字符集相同、排序规则不同的表:ci规则下同一条查询真实同时命中3行;bin规则下真实只命中1行。给ci列加唯一索引,真实立刻报Duplicate entry。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

utf8mb4 存储差异

本机真实测了4种文本:英文1字节/字符,中文3字节/字符,emoji真实4字节/字符。往老式utf8(mb3)列插同样的emoji:严格模式报错拒绝,宽松模式真实静默存成了问号。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

DECIMAL 与浮点数

本机用FLOAT存0.1和0.2,SUM真实是0.30000000447034836;换成DECIMAL(10,2),SUM真实精确等于0.30。1000行0.01累加:FLOAT真实变成9.999999776482582,DECIMAL真实还是精确的10.00。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

时区与 TIMESTAMP

本机往TIMESTAMP和DATETIME各存一条12:00:00,切换session time_zone分别到+08:00和-05:00再读:TIMESTAMP真实分别显示成20:00:00和07:00:00,DATETIME真实一动不动还是12:00:00。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

DATE、DATETIME、TIMESTAMP

本机真实测出TIMESTAMP的硬上限:2038-01-19 03:14:07 UTC插入成功,UNIX_TIMESTAMP真实精确等于2147483647;再往后插一秒真实立刻报错。DATETIME同一台机器上真实轻松存下2100年和9999年。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

CHECK CONSTRAINT

本机真实建了一个age BETWEEN 0 AND 150的CHECK约束:插入-5真实报错,插入200真实报错,连UPDATE成-1也真实被拦下来——三次真实都是同一个错误码3819。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

默认值表达式

本机建了一张表,三列的默认值分别是DEFAULT (UUID())、DEFAULT (NOW())、DEFAULT (RAND()),真实插入三行空值,每一行的uid真实各不相同、rand_val真实各不相同。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

隐式类型转换与比较结果

本机真实测了6组比较:0 = 'abc'真实返回true,'' = 0真实返回true,10 = '10abc'真实返回true——静默转换真实都留下了一条Truncated incorrect DOUBLE value警告。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

NULL、三值逻辑与索引

本机真实验证NULL=NULL返回NULL(不是true),NULL<=>NULL才真实返回1;5 IN (1,2,NULL)真实返回NULL而不是false——NOT IN列表混进一个NULL,整个WHERE子句真实会把所有行都过滤掉。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

窗口函数与 frame 语义

本机一张5行的表,score列真实有并列值:用ROWS累计和真实是逐行递增;换成RANGE,并列的行真实都算出相同的累计值——RANGE把并列的行当成了同一个逻辑分组一起计算。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

递归 CTE

本机用一张5层组织架构表,从一个Engineer出发递归向上找汇报链,真实一次查询就走完四层。真实又把递归深度限制调到100去递归1000次,MySQL真实在第101次迭代精确报错。

MySQL InnoDB 真实验证 动画演示
京ICP备2026067502号-1京公网安备11010502063487号