前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >B+树(5)myISAM简介 --mysql从入门到精通(十七)

B+树(5)myISAM简介 --mysql从入门到精通(十七)

作者头像
用户9919783
发布2022-07-26 12:22:33
6010
发布2022-07-26 12:22:33
举报
文章被收录于专栏:后端从入门到精通

上篇文章我们说了,联合索引会用两个以上列来创建索引,b+树是一颗,先用c2列排序,若结果相同,则用c3排序。innoDB的b+树特点是根节点保持不变,新表是先默认有聚簇索引,先有一个没有数据的根目录节点,放用户记录数据放入根几点中,当数据慢了,页分裂,会有多的节点,此刻根节点进化成根目录记录节点,数据存入底层节点。二级索引的内节点保证一致性,存入列值的时候加个主键。

B+树(4)联合索引 --mysql从入门到精通(十六)

myISAM简介

我们知道了innoDB搜索引擎的是索引即是数据,分为列表值索引树,和聚簇索引树,聚簇索引那颗b+树索引即是数据,所有的用户记录数都存在叶子节点。而myISAM虽然也是B+树,但索引和数据是分开的。

myISAM会吧用户记录数据全部放在一个文件里,称为数据文件,这个文件不会划分若干页,有多少记录就往里面塞,通过每一行对应的行号快速访问,因为随意塞入,不会按主键大小排序,不能用二分查找法查找。

之后会吧索引信息存储到另一个索引文件里,myISAM会单独为表的主键创建索引,只不过在叶子节点存储的不是用户记录数据,而是主键+行号,意味着找到到对应行号之后,会用行号去数据文件里再次找全部数据。所以myISAM每次查询都是必须要回表的,相当于二级索引。(innoDB的聚簇索引是直接在根目录记录页根据主键找到对应的内节点,在找到对应的底层叶子节点上的全部数据)。

有需要的话,也可以建立二级索引或者联合索引,只是叶子节点存放的是列值+行号。

创建索引和删除索引:

说了那么多理论知识,那如何实战呢?mysql中的innoDB和myISAM表会自动为主键或者申明的为unique的列创建聚簇索引,但如果需要给其他列创建二级索引,则需要在sql里显示指明。为啥不自动创建呢,别忘了越多的索引意味着越多的b+树,意味着插入和删除都需要巨大的内存来维护b+树,很耗费性能。

建表的时候可以创建索引,index 和 key关键字都可以使用,指定indx_tb_col表的c2列为idx_c2名称的索引:

代码语言:javascript
复制
create table index_tb_col(
  c1 int,
  c2 int,
  c3 char(1),
  index idx_c2 (c2)
)row_format=Compact;

也可以在表创建完成之后,指定c3为idx_c3名称的索引:

代码语言:javascript
复制
mysql> alter table index_tb_col add index idx_c3 (c3);
Query OK, 0 rows affected (0.04 sec)

也可以添加联合索引和删除索引:

代码语言:javascript
复制
//复合索引
mysql> create table index_tb_col(
    -> c1 int,
    -> c2 int,
    -> c3 char(1),
    -> primary key (c1),
    -> index idx_c2_c3 (c2,c3)
    -> )row_format=Compact;
Query OK, 0 rows affected (0.03 sec)
 
//删除索引
mysql> alter table index_tb_col drop index idx_c2_c3;
Query OK, 0 rows affected (0.03 sec)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 后端从入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • myISAM简介
  • 创建索引和删除索引:
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档