mysql
文章平均质量分 56
码农小麦
这个作者很懒,什么都没留下…
展开
-
InnoDB:一条update语句执行过程
其实MySQL也可以看成是一个应用(业务)系统,一条update语句对于MySQL而言就是处理一个业务,为了支持撤销,保证宕机后可恢复,这个应用系统做了很多保障工作。原创 2022-11-15 09:45:07 · 426 阅读 · 0 评论 -
『明细表』关联『批次表』,明细表的关联字段为毛要加索引
select version(); --8.0.26如下有两张表,批次表和明细表,明细表的batch_id关联批次表的主键id,所含字段均为涂鸦。desc t_batch;desc t_detail;下面造一些测试数据,考虑本地mysql是docker,数据量造100w级。--基础数据insert into t_batch(total, area, create_date)select ceiling(rand() * 900000 + 1000000), case when ran原创 2021-11-03 01:29:47 · 161 阅读 · 0 评论 -
表分区:mysql partition
mysql支持对表进行水平分区(partition),对表进行水平拆分(sharding),用户可以根据指定规则(分区函数)进行数据分片管理(每个分区相当于一个独立的表,物理上独立的数据文件)。要创建分区表,就需要使用支持分区的存储引擎,同一个分区表的所有分区必须使用相同的存储引擎。在mysql8中,唯一支持分区的存储引擎是InnoDB和NDB。本文使用MySQL8&&InnoDB,先来看一个简单示例:create table t_parti(id bigint,amount decim原创 2021-08-04 13:28:16 · 1340 阅读 · 0 评论 -
mysql聚簇索引和非聚簇索引,主键索引和其它索引
聚簇索引的叶子节点就是数据节点,主键就是聚簇索引,一个表就一个主键,一个表也就一个聚簇索引。非聚簇索引(二级索引)的叶子节点存的是主键索引,所以查询未使用覆盖索引时,存储引擎需要先找到二级索引叶子节点对应的主键值,然后通过聚簇索引找到目标行记录,即回表操作。这里顺便提一下覆盖索引,我们知道索引节点本身其实也是数据,如果我们只需要索引节点数据(只需要索引字段,不需要其他非索引字段),那查询时就可以直接返回索引节点数据,而不需要再回表。下面我们对比一下InnoDB和MyISAM两个存储引擎的数据分布。In原创 2020-08-15 23:08:04 · 625 阅读 · 0 评论 -
MySQL的EXPLAIN其实很简单
EXPLAIN命令是查看查询优化器如何决定执行查询的主要方法,使用起来也非常简单,只需在SELECT(同样适用DELETE、UPDATE,本质还是SELECT)语句前加上EXPLAIN关键字即可,MySQL会返回关于在执行计划中的每一步的信息。创建两个表用来测试验证下,product_category,product_infoCREATE TABLE `product_category` ( `category_id` int(11) NOT NULL AUTO_INCREMENT, `cate原创 2020-06-21 21:53:01 · 1752 阅读 · 0 评论 -
【mysql】ipv4地址转换为4字节整数
有时需要记录ipv4地址到数据库,直接保存字符varchar(15)可能有些浪费,如果直接保存一个整数的话性价比会更好一些,ipv4有4段,每段取值范围都是0~255,使用1个字节就可以保存,如果转换为一个整数4个字节就可以搞定,注意mysql需使用无符号int。注意在java中Integer是有符号的,最大值为2147483647,所以需要Long来盛放转换后的整数;位移运算优先级低于加法运算,位移处加了括号:public static Long getIpNum(final String ip)原创 2020-05-18 23:58:50 · 1689 阅读 · 0 评论