课程研讨|数据库原理1|第三周-2

研讨题目

什么是聚集索引?什么是非聚集索引?索引的作用是什么?请说明上述实验题1的验证过程及所得到的结果?

研讨内容

聚集索引的概念

聚集索引定义了数据在表中的物理存储顺序。表数据只能以某种方式排序,因此,每个表只能有一个聚集索引。在SQL Server中,主键约束自动在该特定列上创建聚集索引。

  • 根据索引的列对数据进行物理排序。
  • 因此,当我们创建聚集索引时,实际上是在物理上对表的行进行排序。总之,聚集索引包含一行的所有列。
  • 一个表上只能有一个聚集索引,因为表中的行将按照聚集索引中指定的顺序进行排序。
  • 这意味着无论何时插入或更新记录,聚集索引都可以确保顺序得到维护。此过程可能会影响应用程序的性能。
  • 对于没有聚集索引的表,数据存储在无序堆中。堆没有秩序的结构,他们没有自然的秩序。随着表的增长和数据随时间的推移而碎片化,这可能会带来问题。

非聚集索引的概念

非聚集索引不会对表中的物理数据进行排序。实际上,非聚集索引存储在一个位置,表数据存储在另一位置。这类似于教科书,其中书的内容位于一个位置,索引位于另一个位置。每个表允许一个以上的非聚集索引。

在这里重要的是要提到在表内,数据将按聚集索引排序。但是,内部非聚集索引数据按指定顺序存储。索引包含在其上创建索引的列值以及该列值所属的记录的地址。

当针对要在其上创建索引的列发出查询时,数据库将首先转到索引并在表中查找相应行的地址。然后它将转到该行地址并获取其他列值。由于此附加步骤,非聚集索引比聚集索引慢。

聚集索引和非聚集索引的区别

  • 每个表只能有一个聚集索引,但是可以在单个表上创建多个非聚集索引。
  • 聚集索引仅对表进行排序。因此,它们不会消耗额外的存储空间。非聚集索引存储在与实际表不同的位置,从而占用更多存储空间。
  • 聚簇索引比非聚簇索引要快,因为它们不涉及任何额外的查找步骤。

索引的概念及作用

索引用于加快SQL Server中的查询过程,从而提高性能。它们类似于教科书索引。在教科书中,如果需要转到特定的章节,转到索引,找到该章节的页码,然后直接转到该页面。没有索引,查找所需章节的过程将非常缓慢。

这同样适用于数据库中的索引。没有索引,DBMS必须遍历表中的所有记录才能检索所需的结果。此过程称为表扫描,并且非常慢。另一方面,如果创建索引,则数据库将首先转到该索引,然后直接检索对应的表记录。

是一个单独的、物理的数据库结构,它是某个表中一列或若干类的集合相应的指向表中物理标识这些值的数据页的逻辑指针清单,索引是依赖于表建立的,它提供了数据库中编排表中数据的内部方法。一个表分为两部分组成,一部分用来存放表的数据页面,另一部分存放索引页面。

优点

  1. 保证数据记录的唯一性
  2. 加快数据检索速度
  3. 加快表与表间的连接速度
  4. 在使用ORDER BY和GROUP BY子句中进行检索数据时可以显著减少查询中分组和排序的时间
  5. 可以在检索数据的过程中使用优化隐藏器,提高系统性能。

参考资料

  1. https://medium.com/fintechexplained/clustered-vs-non-clustered-index-8efed55ed7b9
  2. https://www.sqlshack.com/what-is-the-difference-between-clustered-and-non-clustered-indexes-in-sql-server/
  3. https://www.sqlservertutorial.net/sql-server-indexes/sql-server-clustered-indexes/
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值