了解过java软件开发的小伙伴应该对数据库也不会陌生吧,那么还记得数据库索引吗?了解其原理是什么吗?有兴趣的朋友们可以跟小编一起来瞧瞧看哦
索引其实就是一种特殊类型的数据库对象,它与表有着密切的一些联系。索引其实是为检索而存在的。例如一些书籍的末尾就会专门附有索引,作用就是指明了某个关键字在正文中的出现的页码位置,方便我们去查找,但是大多数的书籍就只有目录,目录不是索引,只是书中内容的一种排序,并不会提供真正的检索功能的。可见建立索引要单独占用一定的空间;那么索引也并不是必须要建立的,它们只是为更好、更快的检索和定位关键字而存在的。
从形式上来说,索引是分为聚集索引(Clustered Indexes)和非聚集索引(NonClustered Indexes)的。其中聚集索引键值的逻辑顺序就决定了表中相应行的物理顺序了,在非聚集索引里面,数据库表中记录的物理顺序跟索引顺序可以不相同了。
聚集索引其实就相当于书籍的脊背上那个特定的编号吧。如果说对一张表建立了聚集索引,那么其索引页中就应该包含着建立索引的列的值(下称索引键值),那么表中的记录将按照该索引键值进行排序。例如,我们如果在“兴趣”这一字段上建立了聚集索引,则表中的记录将按照兴趣进行排列;如果建立了聚集索引的列是数值类型的,那么记录将按照该键值的数值大小来进行排列。
非聚集索引主要是用于指定数据的逻辑顺序,这也就是说,表中的数据并没有按照索引键值指定的顺序去排列的,而是按照插入记录时的顺序在存放的。其索引页里面包含着索引键值和它所指向该行记录在数据页里面的物理位置,叫做行定位符(RID:Row ID)。好似书后面的的索引表,索引表中的顺序与实际的页码顺序也是不一致的。
我们知道SQL Server在默认的情况下建立的索引是非聚集索引,由于非聚集索引不对表中的数据进行重组,而只是存储索引键值并用一个指针指向数据所在的页面。一个表如果没有聚集索引时,理论上可以建立249个非聚集索引。每个非聚集索引提供访问数据的不同排序顺序。
那么以上就是有关数据库索引的所有内容了,还想了解更多java常见问答信息,记得关注本站消息获取更多知识。
推荐阅读: