索引(index)
我们可以通过索引来加快查询的速度。
⭐建立索引的最优情况:
1、数据量较大,且经常对这些列进行条件查询。
2、该数据库表的插入操作,及对这些列的修改操作频率较低。
3、索引会占用额外的磁盘空间。
索引的代价:
1、占用更多的空间。
2、可能降低插入、删除、修改的速度。
索引的语句:
查看索引:
show index from 表名;
创建索引:
create index 索引名字 on 表名(列名);
⭐当创建表时,主键、外键、unique会自动生成索引。
删除索引:
drop index 索引名字 on 表名;
⭐只有手动创建的索引才可以删除。
例子创建:
我们可以创建一个表,主键是id
查看表索引
show index from test;
这个形式就是索引创建成功了,如果我们想要删除主键自动生成的索引,就会如下:
删除索引
drop index 索引名字 on 表名;
创建索引
如果我们要把classid设置为索引,则如下
create index 索引名字 on 表名(列名);
(索引名字是自己想起的别名)
删除索引2:
因为class_ID是我们手动创建的,所以我们删除如下
drop index 索引名字 on 表名;
这样我们就是删除成功了。
数据库引用的索引
⭐⭐数据库引用的索引是一个改进的树形结构,B+数(N叉搜索数)。
⭐索引是针对某个表的指定列设置的。
问题
我们在创建和删除索引时,会对数据库可能造成很大的损坏,所以当一个数据量很大的表想要创建/删除索引时怎么做呢?
答:
我们可以拿一个新的机器,创建空表,创建索引,把旧的机器上面的数据导入到新的机器中,使用新机器替代旧机器。
B+树:
数据库引用的索引就是一个B+树。
1、B+树是一个N叉搜索树,一个节点上存在M个key,划出N个区间。
2、每个节点上N个key,最后一个相当于当前子树的最大值。
3、父亲节点上的每个key都会以最大值的身份在子节点相应区间存在。
叶子节点这一层,包含整个树的数据全集。
4、B+树会使用链表,把叶子节点串起来。
B+树的特点就是:查询的速度更稳定。