索引和目录的区别是什么?具体有哪些索引?

XIAO 2020-06-01 14:53:19 java常见问答 4399

对于刚刚入门学习Java语言的小伙伴们来说,一切都是新的知识,很多时候遇到一个知识点,可能就得通过类比来学习了,就比如说把索引跟目录来作对比...所以你是否也清楚索引跟目录的区别呢?

索引其实就是加快检索表里面数据的方法。其实就可以说数据库的索引就类似于书籍的索引。我们知道在书籍中,索引就是允许用户不必翻阅完整本书就能迅速地找到所需要的信息。那么在数据库里面,索引也是允许数据库程序迅速地找到表中的数据,而不必去扫描整个数据库的作用。

聚集索引:

例如给表上了主键,那么表在磁盘上面的存储结构就会由整齐排列的结构转变成为树状结构,也就是平衡树的结构,也就是说,整个表变成了一个索引。

非聚集索引:

非聚集索引和聚集索引差不多, 都是采用了平衡树去作为索引的数据结构。索引树结构里面的各节点的值都来自于表中的索引字段, 假如说给user表的name字段加上了索引 , 那么索引就是由name字段中的值构成的了,在数据改变的时候, DBMS就需要一直去维护索引结构的正确性了。如果说给表中多个字段加上了索引 , 就会出现多个独立的索引结构,而且每个索引互相之间是不存在关联关系的。

每次去给字段建一个新的索引, 字段里面的数据会被复制一份出来的, 主要用于生成索引。 这么说来, 给表添加索引,就会增加表的体积, 从而占用了磁盘存储的空间。

复合索引:

那么是有一种例外可以不使用聚集索引就能查询出所需要的数据, 这种非主流的方法被称之为覆盖索引查询, 也就是我们平时所说的复合索引了。注意覆盖索引查询是复合索引的一种比较特殊的情况。

索引的常见类型如下所示:

mysql数据库基本的索引类型有:普通索引、唯一索引、主键索引、全文索引。

主键索引:数据记录里面是不能有null的,同时数据内容不允许重复,在一张表里面是不能有的;

多个主键索引:是 一种特殊的唯一索引。主键索引是可以被其他表引用为外键使用的;

普通索引:使用字段关键字建立起来的索引,主要就是提高查询速度;

唯一索引:字段数据是唯一的,数据内容里面能有null的存在,在一张表里面,是可

以添加多个唯一索引。 唯一索引是不可以被其他表引用为外键的。

全文索引:是在比较老的版本中,只有 myisam引擎支持的全文索引,在innodb5.6之后引擎也支持了全文索引,在mysql里面全文索引是不支持中文的。我们一般使用sphinx集合coreseek去实现中里面的全文索引。一般是用来代替like查询的。

那么以上就是本篇文章的所有内容了,还想了解更多java入门知识,记得多多关注本站消息哦。

推荐阅读:

索引失效的几种情况(总结)

索引超出矩阵维度怎么解决?

递归和迭代有什么区别?简述区别