什么是索引索引类型有几种,各有什么特点

什么是索引索引类型有几种,各有什么特点,第1张

索引是对数据表中一列或多列的值进行排序的一种结构,例如 employee 表的姓(name)列如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息

索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序数据库使用索引的方式与您使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行在数据库关系图中,您可以在选定表的“索引/键”属性页中创建、编辑或删除每个索引类型当保存索引所附加到的表,或保存该表所在的关系图时,索引将保存在数据库中

可以基于数据库表中的单列或多列创建索引多列索引使您可以区分其中一列可能有相同值的行如果经常同时搜索两列或多列或按两列或多列排序时,索引也很有帮助例如,如果经常在同一查询中为姓和名两列设置判据,那么在这两列上创建多列索引将很有意义确定索引的有效性:检查查询的 WHERE 和 JOIN 子句在任一子句中包括的每一列都是索引可以选择的对象对新索引进行试验以检查它对运行查询性能的影响考虑已在表上创建的索引数量最好避免在单个表上有很多索引检查已在表上创建的索引的定义最好避免包含共享列的重叠索引检查某列中唯一数据值的数量,并将该数量与表中的行数进行比较比较的结果就是该列的可选择性,这有助于确定该列是否适合建立索引,如果适合,确定索引的类型

建立索引的优点:

1大大加快数据的检索速度;

2创建唯一性索引,保证数据库表中每一行数据的唯一性;

3加速表和表之间的连接;

4在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间

索引类型:

根据数据库的功能,可以在数据库设计器中创建四种索引:唯一索引、非唯一索引、主键索引和聚集索引尽管唯一索引有助于定位信息,但为获得最佳性能结果,建议改用主键或唯一约束

唯一索引:

唯一索引是不允许其中任何两行具有相同索引值的索引当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存数据库还可能防止添加将在表中创建重复键值的新数据例如,如果在 employee 表中职员的姓 (lname) 上创建了唯一索引,则任何两个员工都不能同姓

非唯一索引:

非唯一索引是相对唯一索引,允许其中任何两行具有相同索引值的索引当现有数据中存在重复的键值时,数据库是允许将新创建的索引与表一起保存这时数据库不能防止添加将在表中创建重复键值的新数据

主键索引:

数据库表经常有一列或列组合,其值唯一标识表中的每一行该列称为表的主键在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型该索引要求主键中的每个值都唯一当在查询中使用主键索引时,它还允许对数据的快速访问

聚集索引(也叫聚簇索引):

在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同一个表只能包含一个聚集索引如果某索引不是聚集索引,则表中行的物理顺序与键值的逻辑顺序不匹配与非聚集索引相比,聚集索引通常提供更快的数据访问速度

(一) 索引类似字典以及书籍的目录,索引的作用就是加快检索数据的速度,提高效率,

索引分类为:

逻辑上:

Single column 单列索引

Concatenated 多列索引

Unique 唯一索引

NonUnique 非唯一索引

Function-based函数索引

Domain 域索引

物理上:

Partitioned 分区索引

NonPartitioned 非分区索引

B-tree:

Normal 正常型B树

Rever Key 反转型B树

Bitmap 位图索引

(二) 聚集索引和非聚集索引有什么区别?

例如由于字典是按照拼音的顺序来实际存储的,因此对拼音的索引是聚集索引,

也可以建立对笔画等的索引,由于实际存储并不是按照笔画的顺序来存储的,

因此对笔画的索引是非聚集索引,

(三)简述分区表和分区索引的优点:应该是利用不同的分区可以使得检索数据并行,进一步提高速度。

什么是索引:

索引是数据库存储引擎用于快速查找到指定数据的一种数据结构。

可以用新华字典做类比:如果新华字典中对每个字的详细解释是数据库中表的记录,那么按部首或拼音等排序的目录就是索引,使用它可以让我们快速查找的某一个字详细解释的位置。

在MySQL中,存储引擎也是用了类似的方法,先在索引中找到对应的值,然后再根据匹配的索引值找到对应表中记录的位置。

面试中为什么问索引:

之所以在索引在面试中经常被问到,就是因为:索引是数据库的良好性能表现的关键,也是对查询能优化最有效的手段。索引能够轻易地把查询性能提高几个数量级。

然而,糟糕的索引也同样会影响查询性能,当表中的数据量越来越多的时候,索引对性能的影响就越大。在数据量比较少并且负责比较低的时候,糟糕的索引对性能的影响可能不明显,但是当数据量逐渐增多的时候,性能会急剧下降。

索引的类型:

不同类型的索引,可以为不同场景提供更好的性能。在MySQL中,索引是在存储引擎层面实现的,而不是在服务器层面实现的。正如大家所知道,MySQL支持多种类型的存储引擎。所以,在不同存储引擎中索引的实现方式并不是一样的,也不是所有类型的索引都被所有存储引擎支持的,即使多个存储引擎支持同一种类型的索引,它底层的实现也有可能是不相同的。

索引是为检索而存在的。如一些书籍的末尾就专门附有索引,指明了某个关键字在正文中的出现的页码位置,方便我们查找,但大多数的书籍只有目录,目录不是索引,只是书中内容的排序,并不提供真正的检索功能。可见建立索引要单独占用空间;索引也并不是必须要建立的,它们只是为更好、更快的检索和定位关键字而存在。

再进一步说,我们要在图书馆中查阅图书,该怎么办呢?图书馆的前台有很多叫做索引卡片柜的小柜子,里面分了若干的类别供我们检索图书,比如你可以用书名的笔画顺序或者拼音顺序作为查找的依据,你还可以从作者名的笔画顺序或拼音顺序去查询想要的图书,反正有许多检索方式,但有一点很明白,书库中的书并没有按照这些卡片柜中的顺序排列——虽然理论上可以这样做,事实上,所有图书的脊背上都人工的粘贴了一个特定的编号①,它们是以这个顺序在排列。索引卡片中并没有指明这本书摆放在书库中的第几个书架的第几本,仅仅指明了这个特定的编号。管理员则根据这一编号将请求的图书返回到读者手中。这是很形象的例子,以下的讲解将会反复用到它。

以上就是关于什么是索引索引类型有几种,各有什么特点全部的内容,包括:什么是索引索引类型有几种,各有什么特点、数据库的索引问题、数据库中的索引是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9551049.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存