MySQL技术文章
-
MySQL CTE 默认可能被合并进外层查询。需要固定中间结果处理方式时,可在顶层 SELECT 中使用 NO_MERGE(cte_name) 禁止合并,或使用 MERGE(cte_name) 表达合并意图,再用 EXPLAIN 检查计划变化。208 收藏 -
数据库 · MySQL | 2个月前 | MySQL · 事务 · 并发控制 · InnoDB · READ COMMITTED MySQL一致性读 当前读 快照读 REPEATABLE READ FOR UPDATE
用两个事务的可复现实验解释 MySQL InnoDB 快照读为什么看不到另一个事务刚提交的数据,并对比 REPEATABLE READ、READ COMMITTED 与 SELECT ... FOR UPDATE 的适用边界。207 收藏 -
MySQL 存表情报错通常不是只改数据库默认字符集就够了,还要检查目标列和应用连接是否统一使用 utf8mb4。本文按检查、转换、连接配置和回滚边界给出一套可执行处理方法。207 收藏 -
MySQL INET6_ATON 会把合法的 IPv4 或 IPv6 文本转换为二进制值,IPv4 通常是 4 字节、IPv6 是 16 字节;无效地址或 NULL 输入会得到 NULL。本文用可直接改写的 SQL 说明输入边界、结果检查、VARBINARY 存储和 INET6_NTOA 反向展示。207 收藏 -
MySQL 8.4 开启 sql_generate_invisible_primary_key 后,InnoDB 无主键表可能出现不可见的 my_row_id。本文用 SHOW CREATE TABLE、SHOW INDEX 和信息架构查询确认真实表结构,并说明复制与备份边界。206 收藏 -
EXPLAIN 的 filtered 很低不等于索引失效。本文用可复现实验拆开 rows、filtered、实际扫描行数与统计信息之间的关系,给出索引、ANALYZE TABLE 和回归验证的判断顺序。205 收藏 -
解释为什么 UPDATE 的 EXPLAIN 计划看不到 Using index condition 仍可能正常:SELECT 用 ICP 减少完整行读取,而 UPDATE 必须读取并修改目标记录并维护相关索引。205 收藏 -
MySQL 的 JSON 标量提取结果未必天然适合作为函数索引键。本文说明 JSON_UNQUOTE 返回 LONGTEXT 时为什么需要 CAST,并给出字符串、数值、金额类型的索引与查询匹配写法。204 收藏 -
MySQL 单表按组取最小值时,如何让 GROUP BY 列形成联合索引左前缀,并让 MIN 列紧邻其后。结合 SQL 示例说明 Loose Index Scan 条件、计划标记与改造边界。203 收藏 -
MySQL REGEXP_LIKE 适合做复杂文本匹配,但 NULL、大小写、行模式和索引预期都容易造成误判。本文用订单备注校验场景拆开匹配结果与执行边界。202 收藏 -
围绕 InnoDB 新增二级索引,说明如何用 ALGORITHM=INPLACE、LOCK=NONE 评估元数据锁等待、在线变更日志、临时排序文件和生产上线边界。202 收藏 -
用 MySQL LATERAL 派生表按每个外层客户筛选最近订单,说明引用边界、LEFT JOIN 空结果、稳定排序和索引设计要点。202 收藏 -
InnoDB 检测到死锁后通常只回滚一个受害事务,以最小代价打破等待环。本文解释 victim 的选择依据、日志排查方式,以及应用收到 1213 后为什么要重试完整事务。201 收藏 -
MySQL 生成列没有单独的刷新按钮:依赖列变化时,存储生成列和它的索引在行写入过程中维护,虚拟生成列则在读取时计算。本文用最小 SQL 区分两种时机,并排查事务可见性与执行计划未用索引的常见误判。201 收藏 -
MySQL 日期范围查询没有触发分区裁剪,通常与分区表达式不匹配、日期列被函数包裹、类型转换或范围过宽有关。本文用 SHOW CREATE TABLE、INFORMATION_SCHEMA.PARTITIONS 和 EXPLAIN 的 partitions 列定位原因,并给出半开区间改写方法。201 收藏