慢慢走,认真看;答案常在行走之间。
MySQL 中 IN 与 EXISTS:语义、NULL 与执行计划 MySQL 中 IN 与 EXISTS:语义、NULL 与执行计划
“子查询表大用 EXISTS,子查询表小用 IN”是一条常见口诀,但我不会直接把它当成 SQL 改写依据。选择之前,先确认查询要表达什么,尤其是有没有 NULL,再看具体版本和执行计划。 本文的优化器说明按 MySQL 8.4 文档核对;较
2026-10-20
SQL LIKE 中的下划线陷阱:如何正确匹配带下划线的字符串 SQL LIKE 中的下划线陷阱:如何正确匹配带下划线的字符串
在日常的数据库查询中,我们经常需要使用 LIKE 操作符进行模糊匹配。当表名或字段名本身包含下划线(_)时,一个隐蔽而常见的错误就可能悄悄出现——下划线在 SQL 的 LIKE 模式中是一个通配符,代表任意一个字符。如果忘记转义,就会匹配出
2026-05-07
MySQL 生成列 MySQL 生成列
MySQL 生成列(Generated Column),也称为虚拟列,是一种特殊类型的列,其值由其他列的值通过表达式计算得出,而不是直接存储在表中。 基本概念生成列分为两种类型: 虚拟列(VIRTUAL):值在查询时动态计算,不占用存储空
2025-04-24
MySQL中的JSON MySQL中的JSON
以MySQL为代表的关系型数据库,5.7.8之前没有JSON这种数据类型,只能以varchar或者text形式变相的支持JSON,存取键值极不方便;5.7.8开始有JSON数据类型,有专门语法支持键值的存取,易用性得到很大提升。下面说说js
2022-05-20
DOS命令进入MySQL DOS命令进入MySQL
1. 先进入mysql安装目录下的bin目录中 2. 执行命令mysql -hlocalhost -uroot -p按要求输入密码,回车即可。 3. 执行命令操作数据库如:显示所有的数据库 4. 退出mysql数据库exit回车即可
2022-05-11
MySQL中的binlog MySQL中的binlog
如何查看binlog日志1. 开启binlog 在my.ini文件[mysqld]里添加log_bin=mysql-bin,值 mysql-bin 是日志的基本名或前缀名 通过mysql的变量配置表,查看二进制日志是否已开启 查看MySQL
2022-05-10
谈谈MySQL中的聚簇索引和非聚簇索引 谈谈MySQL中的聚簇索引和非聚簇索引
理解 InnoDB 索引时,最有用的问题是:叶子节点里有什么,能不能直接提供当前查询要的字段?这比背诵“主键快、普通索引慢”更有助于分析实际查询。 一、普通 B+ 树索引的叶子节点以下讨论 InnoDB 常见的 B+ 树索引,不把全文索引、
2022-03-21
B树与B+树 B树与B+树
B+Tree对比BTree的优点 磁盘读写代价更低一般来说B+Tree比BTree更适合实现外存的索引结构,因为存储引擎的设计专家巧妙的利用了外存(磁盘)的存储结构,即磁盘的最小存储单位是扇区(sector),而操作系统的块(block)通
2022-03-21
MySQL数据库优化 MySQL数据库优化
数据库优化无论实在面试还是工作中都非常重要,结合个人多年的从业经验,它主要从数据库设计、sql优化、服务器优化等方面来进行。 数据库设计优化表设计方面 1)表的数据类型是否合理,要遵守选取数据类型越简单越小的原则 2)表中碎片是否整理 3
2021-08-07
MySQL脚本执行中,预防误处理数据的方法 MySQL脚本执行中,预防误处理数据的方法
在工作中,有时需要通过数据库脚本来变更生产数据,但稍有疏忽,就会误删数据、或者变更过多数据;为防预防这类情况的发生,根据我个人的工作经验,总结了以下几点方法: 1、先测试 脚本写好之后,先在测试环境执行一遍,一方面可以看看脚本是否有语
2020-08-05
MySQL中decimal类型 MySQL中decimal类型
工资、订单金额和税率等字段,如果要求按十进制精确保留数值,通常会考虑 DECIMAL。MySQL 中 NUMERIC 作为 DECIMAL 实现,可以按相同类型理解。 一、精度与小数位数salary DECIMAL(9, 2) 9 是精度(
2020-07-05
MySQL中的explain MySQL中的explain
当我们在执行sql时,一般都会使用explain来分析sql的效率情况。 用法 只需要在查询的 SQL 前面添加上 explain 关键字即可。 结果列说明 id — 选择标识符,id 越大优先级越高,越先被执行; select_type
2020-06-12
1 / 2