
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在前几期的文章中给大家简单介绍了程序员在学习软件编程开发技术的时候需要掌握的一些编程知识等内容,而本文我们就继续来学习一下,程序员需要了解哪些数据库索引类型。
索引的类型分为四种:
FULLTEXT(全文索引)[了解]:
主要用来查找文本中的关键字,只能在CHAR、VARCHAR或TEXT类型的列上创建。在MySQL中只有MyISAM存储引擎支持全文索引。
全文索引允许在索引列中插入重复值和空值。
不过对于大容量的数据表,生成全文索引非常消耗时间和硬盘空间。
SPATIAL(空间索引)[了解]:
空间索引是对空间数据类型的字段建立的索引
创建空间索引的列必须将其声明为NOTNULL,空间索引只能在存储引擎为MyISAM的表中创建。
空间索引主要用于地理空间数据类型GEOMETRY。这类索引相对来说很少会被用到。
NORMAL(普通索引):
MySQL中基本的索引类型,加快系统对数据的访问速度。
没有任何的限制,允许在定义索引的列中插入重复值和空值。
UNIQUE(索引):
索引与普通索引类似,但它的目的不是为了提高访问速度,而是为了避免数据出现重复。
索引列的值必须,允许有空值。如果是组合索引,则列值的组合必须。
单值索引-联合索引->左前缀原则
从依据创建索引的字段的个数我们可以分为单值索引和联合索引。
单值索引:根据一个字段来建立索引
联合索引:根据超过一个字段来创建索引
左前缀原则:
左前缀原则这个说法只是针对联合索引的一种建立规则策略。
如果索引包含了多个列,那么我们好遵循左前缀原则。
我们都知道当我们建立多个索引列的时候,会按照索引列建立的顺序进行构建索引树。左前缀原则指的是尽量要让查询会从索引的左列开始匹配,按照每一个建立的索引的顺序,按照顺序依次匹配。期间不能跳过中间的某个索引列。且索引匹配严格按照一个索引开始排序,依次往后。
假设我们建立了(name,task,age)的联合索引,按照左前缀的原则要求:
执行sql:select*fromuserwherename="a"andtask="b"andage=18
我们需要从左列name,找到name匹配值
然后在name相同的情况基础下,task有序,然后找到task匹配值
然后在task匹配的情况基础下,age有序,然后找到age的匹配值
注意:如果我们没有按照顺序依次去遍历匹配的情况,跳过了中间某一个索引列的匹配,则该索引列后续的顺序都是乱的,因为在B+树中,联合索引的建立的有序性都是依据上一个索引列为相同的情况下,当前索引列才有序(这个跟B+树的存储结构原理有关)。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。