MySQL技术文章
-
MySQL CHECK 写入非法值没报错,通常与 NOT ENFORCED、INSERT IGNORE 或 NULL 导致的 UNKNOWN 有关。本文用建表定义、警告和信息架构查询逐层排查。452 收藏 -
MySQL 遇到 OR 条件时可能选择 Index Merge,但这不代表它一定优于联合索引。本文用订单筛选场景拆开合并扫描、回表、排序与改写边界,给出 EXPLAIN 和 EXPLAIN ANALYZE 的核对方法。451 收藏 -
MySQL 8.0.13 及以上可以用函数索引直接索引 DATE(created_at) 的结果,但索引定义必须使用双层括号,查询表达式也要保持一致。本文从创建、命中判断和生成列替代三个方面说明日期表达式查询的落地写法。451 收藏 -
MySQL 直接重命名列会让仍使用旧字段名的 SQL 立即失效。本文区分 RENAME COLUMN 与 CHANGE,说明索引和外键的自动跟随范围,以及视图、存储程序、生成列和分区表达式的人工复核边界,并给出新增列、回填、双写和切换的兼容迁移方案。450 收藏 -
MySQL INSERT IGNORE 不会让所有输入行都成功写入。本文用 ROW_COUNT、Records、Duplicates、Warnings 和 SHOW WARNINGS 区分新增行、重复键跳过与数据转换警告,并给出批量导入日志字段设计。448 收藏 -
MySQL 的 ST_IsClosed 对带地理 SRS 的几何值会抛出 ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS。本文解释它与闭合判断、SRID 0、投影 SRS 的关系,并给出保留语义和转换后判断的选择边界。448 收藏 -
ST_Validate 返回 NULL 不能直接等同于无效几何。本文用原始列 IS NULL、ST_IsValid、ST_AsText 和审计 CASE 区分 SQL 空值、语法异常与几何无效,并说明地理 SRS 越界时的报错边界。447 收藏 -
通过租户订单查询拆解 MySQL filesort 来源,区分访问索引与排序需求,说明联合索引列序、查询块定位、候选改动及回退方法。447 收藏 -
MySQL JOIN 报 Illegal mix of collations 时,先核对两列的字符集和排序规则,再用查询级 COLLATE 临时恢复,最后统一字段定义并检查索引与匹配语义。446 收藏 -
用 MySQL JSON_SCHEMA_VALID 配合 CHECK 约束,在 JSON 入库前拒绝缺字段、类型不符和数值越界,并用验证报告定位具体失败位置。446 收藏 -
用 MySQL JSON_TABLE 展开订单 JSON 数组时,通过 DEFAULT ON EMPTY 为缺失字段提供类型正确的默认值,并结合 EXISTS PATH、FOR ORDINALITY 和 ON ERROR 保留可追溯的映射边界。445 收藏 -
MySQL 逻辑备份的并发写入窗口应区分 InnoDB DML、相关 DDL 和非事务表。本文说明单事务快照的适用条件、MySQL 8.4 工具兼容性,以及独立产物、失败保留和业务交接安排。444 收藏 -
MySQL GROUP_CONCAT 结果突然变短时,先检查 group_concat_max_len,再按字节估算选择 SESSION、GLOBAL 或单条语句设置,并同时留意 max_allowed_packet、排序、分隔符和 NULL 行为。443 收藏 -
MySQL FORMAT 的第三个参数 locale 会改变小数点、千分位符号和分组方式。本文用 en_US 与 de_DE 对比说明写法,并解释默认值、NULL、小数位和排序注意事项。443 收藏 -
MySQL C API 里的 mysql_store_result 会把结果集整体取到客户端,适合需要随机访问、统计行数或快速释放连接的场景;mysql_use_result 按行读取、内存更省,但会持续占用当前连接,必须快速读完全部行。本文用对比表和原创 C 示例说明两种方式的边界。443 收藏