
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
MySQL数据库是大多数软件开发程序员在开发软件的时候会经常用到的一个数据库类型,而本文我们就通过案例分析来简单了解一下,MySQL数据库索引类型与特点分析。
一、Mysql中的索引
在MySQL中,索引有两种分类方式:逻辑分类和物理分类。
按照逻辑分类,索引可分为:
主键索引:一张表只能有一个主键索引,不允许重复、不允许为NULL;
索引:数据列不允许重复,允许为NULL值,一张表可有多个索引,但是一个索引只能包含一列,比如身份证号码、卡号等都可以作为索引;
普通索引:一张表可以创建多个普通索引,一个普通索引可以包含多个字段,允许数据重复,允许NULL值插入;
全文索引:让搜索关键词更高效的一种索引。
按照物理分类,索引可分为:
聚集索引:一般是表中的主键索引,如果表中没有显示指定主键,则会选择表中的一个不允许为NULL的索引,如果还是没有的话,就采用Innodb存储引擎为每行数据内置的6字节ROWID作为聚集索引。每张表只有一个聚集索引,因为聚集索引的键值的逻辑顺序决定了表中相应行的物理顺序。聚集索引在精确查找和范围查找方面有良好的性能表现(相比于普通索引和全表扫描),聚集索引就显得弥足珍贵,聚集索引选择还是要慎重的(一般不会让没有语义的自增id充当聚集索引);
非聚集索引:该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同(非主键的那一列),一个表中可以拥有多个非聚集索引。
在目前用的多的mysql的InnoDB存储引擎中,是使用B+Tree索引方法来进行索引建立的。
B+树索引是B+树在数据库中的一种实现,是常见也是数据库中使用为频繁的一种索引。
B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从早的平衡二叉树演化而来的。先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树即由这些树逐步优化而来。
二、索引的优缺点
优点:
1、索引能够提高数据检索的效率,降低数据库的IO成本。
2、通过创建性索引,可以保证数据库表中每一行数据的性,创建索引
3、在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间
4、加速两个表之间的连接,一般是在外键上创建索引
缺点:
1、创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加
2、索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大
3、当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度
三、索引何时应该使用
需创建索引的情况:
1.主键,自动建立索引
2.频繁作为查询的条件的字段
3.查询中与其他表关联的字段存在外键关系
4.查询中排序的字段,排序字段若通过索引去访问将大大提高排序的速度
5.查询中统计或者分组字段
避免创建索引的情况:
1.数据性差的字段不要使用索引
比如性别,只有两种可能数据。意味着索引的二叉树级别少,多是平级。这样的二叉树查找无异于全表扫描。
2.频繁更新的字段不要使用索引
比如登录次数,频繁变化导致索引也频繁变化,增大数据库工作量,降低效率。
3.字段不在where语句出现时不要添加索引
只有在where语句出现,mysql才会去使用索引
4.数据量少的表不要使用索引
使用了改善也不大
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。