二)索引的种类及其作用
()常规索引,也叫普通索引($( 或 )),它可以常规地提高查询效率。
一张数据表中可以有多个常规索引。常规索引是使用最普遍的索引类型,如果没有明
确指明索引的类型,我们所说的索引都是指常规索引。
###'#&#$$$( *字段名*"+
()主键索引(,&#-),也简称主键。它可以提高查询效率,并提供
唯一性约束。一张表中只能有一个主键。被标志为自动增长的字段一定是主键,但主
键不一定是自动增长。一般把主键定义在无意义的字段上(如:编号),主键的数据
类型最好是数值。
####&#$$&#) *字段名*"
()唯一索引(.-),可以提高查询效率,并提供唯一性约束。一张
表中可以有多个唯一索引。
###'#&#$$&#) *字段名*"+
()全文索引(/(),可以提高全文搜索的查询效率,一般使用 (
替代。但 ( 不支持中文检索,0) 是支持中文的全文检索引擎,也称作
具有中文分词功能的 (。实际项目中,我们用到的是 0)。
##表名 #$$.11/23/ *字段名*"+
()外键索引(-),简称外键,它可以提高查询效率,外键会自动
和对应的其他表的主键关联。外键的主要作用是保证记录的一致性和完整性。
4) #'$"4&'# $"
注意:只有 InnoDB 存储引擎的表才支持外键。外键字段如果没有指定索引名称,
会自动生成。如果要删除父表(如分类表)中的记录,必须先删除子表(带外键的表,
如文章表)中的相应记录,否则会出错。创建表的时候,可以给字段设置外键,由于
外键的效率并不是很好,因此并不推荐使用外键,但我们要使用外键的思想来保证数
据的一致性和完整性。
三)Mysql 索引的底层为什么使用 B+树而不使用 B 树?
、5%/622 是 5/622 的变种,5/622 能解决的问题,5%/622 也能够解决(降
低树的高度,增大节点存储数据量)
、 5%/622 扫库和扫表能力更强,如果我们要根据索引去进行数据表的扫描,对 5
/622 进行扫描,需要把整棵树遍历一遍,而 5%/622 只需要遍历它的所有叶子节点即可
(叶子节点之间有引用)。
、5%/622 磁盘读写能力更强,他的根节点和支节点不保存数据区,所有根节点和
支节点同样大小的情况下,保存的关键字要比 5/622 要多。而叶子节点不保存子节点引
用。所以,5%/622 读写一次磁盘加载的关键字比 5/622 更多。
、5%/622 排序能力更强,如上面的图中可以看出,5%/622 天然具有排序功能。
、5%/622 查询效率更加稳定,每次查询数据,查询 78 次数一定是稳定的。
评论0
最新资源