本篇内容介绍了“Mysql索引的简单介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
<节>我们都知道,数据库索引可以帮助我们更加快速的找出符合的数据,但是如果不使用索引,Mysql <强> >强则会从第一条开始查询,直到查询到符合的数据,这样也会导致一个问题:如果没有添加索引,表中数据很大则查询数据花费的时间更多。而这时候我们为字段添加一个索引,Mysql <强> >强就会快速搜索数据,可以节省大量时间。<强> MyISAM 强>和<强> InnoDB 强>是最经常使用的两个存储引擎, ,<强> MyISAM 强> ,和 ,<强> InnoDB 强> ,索引都是采用 ,<强> B + 强> ,树的数据结构,那 ,<强> B 强> ,树和 ,<强> B + 强> ,树的区别是什么呢? 节> <节>节> <节> <强> B树强> ,
节> <节> <强> B 强> ,树是一种多路搜索树,搜索时从根节点开始,对节点内的有序关键字进行二分查找,如果命中则结束搜索,否则根据搜索大小结果进入左右子节点重复搜索,直到找到搜索结果。 ,<强>
强> 节> <节>
节> <节> <强>特点:强>
关键字分布在B树所有节点。
关键字不会重复出现在多个节点。
搜索可能在非叶子节点就结束。
B+树
B+树实际上是一种特殊的B树,和B树感官最明显的一个不同点在于B+树关键字只会出现在叶子结点中,并且关键字在链表中是有序的,也就是B+树的搜索最后只会在叶子结点中命中结果,那非叶子结点在B+树充当什么角色呢?非叶子节点在B+树中相当于是叶子结点的索引,而叶子结点是存储关键字数据的数据层。既然Mysql索引采用B+树的数据结构,那么相比于B树,B+树做索引的优势在哪里呢:
磁盘读写代价更低。
查询效率更稳定。
遍历元素效率高。
讲完了B树和B+树的概念,接下来就需要开始谈谈索引了。其实Mysql索引的数据结构有两种:B+树、Hash。但是在MyISAM和InnoDB存储引擎当中只能使用B+树,索引其实总共可以分为四类:
单列索引:单列索引有三种,包括普通索引、唯一索引、主键索引
组合索引
全文索引
空间索引
单列索引
单列索引,顾名思义就是一个索引只能作用于单列,但是一个数据表可以同时拥有多个单列索引。单列索引一共有三种:普通索引、唯一索引、主键索引。
普通索引:基本的索引类型,不会对数据加入任何限制,一样允许添加了普通索引的普通索引的数据列存在空值或重复值,添加普通索引的目的只是为了查询数据会更快一点。
唯一索引:对单列添加唯一索引,就代表这个列只能是唯一值,比如用户表用户名可以添加唯一索引,这样用户名必须是唯一值,但是可以为空值。
主键索引:其实就是在唯一索引的基础上,不允许列出现空值的存在。
组合索引
选中数据表的多列组合然后创建索引,但是组合索引并不是说创建成功都可以被使用,而是需要遵循最左前缀集合。也就是只有在查询条件中使用了这些字段的左边字段,组合索引才会生效。下面我们举个例子来解释下什么叫做最左前缀。
首先创建一个表test_10_09,并且将id, username, sex三个列组合然后添加索引。
CREATE TABLE test_10_09 ( id INT NOT NULL, username VARCHAR (20) NOT NULL, idcard VARCHAR (18), sex VARCHAR (3) NOT NULL, INDEX MultiIdx (id, username, sex))Mysql索引的简单介绍