网站网页设计中怎么添加页码信息,wordpress产品图片大小不一,四川建设工程交易信息网站,鞍山制作网站Mysql--索引分类 1. 索引分类2. 聚集索引二级索引 1. 索引分类
在MySQL数据库#xff0c;将索引的具体类型主要分为以下几类#xff1a;主键索引、唯一索引、常规索引、全文索引。 2. 聚集索引二级索引
而在在InnoDB存储引擎中#xff0c;根据索引的存储形式二级索引 1. 索引分类
在MySQL数据库将索引的具体类型主要分为以下几类主键索引、唯一索引、常规索引、全文索引。 2. 聚集索引二级索引
而在在InnoDB存储引擎中根据索引的存储形式又可以分为以下两种 聚集索引选取规则:
如果存在主键主键索引就是聚集索引。如果不存在主键将使用第一个唯一UNIQUE索引作为聚集索引。如果表没有主键或没有合适的唯一索引则InnoDB会自动生成一个rowid作为隐藏的聚集索引。
聚集索引和二级索引的具体结构如下
聚集索引的叶子节点下挂的是这一行的数据 。二级索引的叶子节点下挂的是该字段值对应的主键值。
接下来我们来分析一下当我们执行如下的SQL语句时具体的查找过程是什么样子的。 具体过程如下: ①. 由于是根据name字段进行查询所以先根据nameArm’到name字段的二级索引中进行匹配查找。但是在二级索引中只能查找到 Arm 对应的主键值 10。
②. 由于查询返回的数据是*所以此时还需要根据主键值10到聚集索引中查找10对应的记录最终找到10对应的行row。
③. 最终拿到这一行的数据直接返回即可。 回表查询 这种先到二级索引中查找数据找到主键值然后再到聚集索引中根据主键值获取 数据的方式就称之为回表查询。 思考题 以下两条SQL语句那个执行效率高? 为什么? A. select * from user where id 10 ; B. select * from user where name ‘Arm’ ; 备注: id为主键name字段创建的有索引
解答 A 语句的执行性能要高于B 语句。 因为A语句直接走聚集索引直接返回数据。 而B语句需要先查询name字段的二级索引然后再查询聚集索引也就是需要进行回表查询。
思考题 InnoDB主键索引的Btree高度为多高呢? 假设: 一行数据大小为1k一页中可以存储16行这样的数据。InnoDB的指针占用6个字节的空间主键即使为bigint占用字节数为8。
高度为2 n * 8 (n 1) * 6 161024 , 算出n约为 1170 1171 16 18736 也就是说如果树的高度为2则可以存储 18000 多条记录。
高度为3 1171 * 1171 * 16 21939856 也就是说如果树的高度为3则可以存储 2200w 左右的记录。