在日常的数据库管理中,许多人对于主键的概念、索引的概念以及它们各自的用法都比较模糊,它们有何区别呢? 主键是一个逻辑对象。我的意思是,它只是定义了一个列或一个列集的属性集合,它规定了组成主键的这些列是唯一并且没有空值的,因此这些值可以用来鉴别表中的单独一行。在大多数的数据库平台中,主键上都会有一个索引。 相反地,一个索引并不是用来定义唯一性的。
索引的作用是根据数据值,更加快速地查找表中的指定行,而数据值就是索引的一部分。当你在数据库中创建了一个索引,就相当于创建了一个物理对象,它是存储在硬盘中的。拿员工表作为例子看一下: CREATE TABLE dbo.Emp……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
在日常的数据库管理中,许多人对于主键的概念、索引的概念以及它们各自的用法都比较模糊,它们有何区别呢?
主键是一个逻辑对象。我的意思是,它只是定义了一个列或一个列集的属性集合,它规定了组成主键的这些列是唯一并且没有空值的,因此这些值可以用来鉴别表中的单独一行。在大多数的数据库平台中,主键上都会有一个索引。
相反地,一个索引并不是用来定义唯一性的。索引的作用是根据数据值,更加快速地查找表中的指定行,而数据值就是索引的一部分。当你在数据库中创建了一个索引,就相当于创建了一个物理对象,它是存储在硬盘中的。拿员工表作为例子看一下:
CREATE TABLE dbo.Employee (EmployeeId INT PRIMARY KEY, LastName VARCHAR(50), FirstName VARCHAR(50), DepartmentId INT, StartDate DATETIME, TermDate DATETIME, TermReason INT) |
我们的这个表中的主键是员工ID,因为我们可以用ID来鉴别员工。如果我们使用姓氏来搜索表,那么数据库将需要读取整个表到内存中,这样我们才会得到相应的员工。如果在进行相同的查询时根据姓氏列创建一个索引,那么数据库只需要读取索引到内存就可以了。这样速度无疑加快了,因为数值早已经存储在索引中,数据库引擎可以直接在索引中找到正确的位置并迅速地找到匹配记录。
希望以上的内容可以对DBA理解索引与主键有帮助。
作者
翻译
相关推荐
-
OpenWorld18大会:Ellison宣布数据库的搜寻和破坏任务
在旧金山举行的甲骨文OpenWorld 2018大会中,甲骨文首席技术官(CTO)兼创始人Larry Elli […]
-
云端SQL Server高可用性最佳做法
与内部部署相比,在云端运行SQL Server可为数据库软件用户提供更多的灵活性和可扩展性,也可能更省钱。但云 […]
-
ObjectRocket着力发展Azure MongoDB服务
MongoDB吸引了微软公司的注意力,微软公司计划针对运行于该公司2017年发布的Azure Cosmos D […]
-
绘制数据关系图的利器:SQL Server 图像数据库工具
SQL Server 2017新增了图形数据库功能,你可以使用图结构来表示不同数据元素之间的关系。