Database design 在数据库中,键和索引有什么区别?
例如,在SQLServer中,如果我有一个设置了“unique”的索引,那么它与键有什么不同Database design 在数据库中,键和索引有什么区别?,database-design,Database Design,例如,在SQLServer中,如果我有一个设置了“unique”的索引,那么它与键有什么不同 如何知道何时使用键与索引字段?键唯一标识表中的行。索引是表中基于字段的行顺序。一个表可以有多个索引,因为索引可以是系统用来搜索并查找实际行的集合字段的特定顺序。从技术上讲,系统只能使用一个键来标识行。大多数情况下,这也是主要索引,但不必如此 唯一性是对数据的强制约束,而索引将有助于对数据库中的行进行物理排序(聚集索引)或逻辑排序(非聚集索引),以便更快地检索。具有唯一值的字段本质上是一个键。但是,键用于
如何知道何时使用键与索引字段?键唯一标识表中的行。索引是表中基于字段的行顺序。一个表可以有多个索引,因为索引可以是系统用来搜索并查找实际行的集合字段的特定顺序。从技术上讲,系统只能使用一个键来标识行。大多数情况下,这也是主要索引,但不必如此 唯一性是对数据的强制约束,而索引将有助于对数据库中的行进行物理排序(聚集索引)或逻辑排序(非聚集索引),以便更快地检索。具有唯一值的字段本质上是一个键。但是,键用于唯一标识表中的行,而索引用于对表中的行进行排序或分组。密钥在初始设置后不应更改,因为它可能会在数据库中的其他位置被引用。但是,索引字段可以自由更改。键用于维护数据完整性,索引用于维护数据库性能。想一想你试图解决的任何问题,这将引导你走向正确的方向。关键应该是业务模型的行的唯一标识符。唯一索引列可以被视为“备用键”。通常SQL Server会自动为主键创建唯一索引
我还应该提到,您可以索引非唯一列;像这样的索引用于加速对索引列的查询。一个键在幕后总是有一个索引 如果创建主键,SQL Server将创建一个群集唯一索引来支持该索引 即使在创建唯一约束时,SQL Server也将创建索引 当然,唯一约束和主键之间的区别在于,唯一约束至少允许1个空值(sql server上为1,Oracle上为1)
一个表上只能有一个主键和许多(sql server上为249)唯一约束一个键标识存储在数据库中的行。索引是一种类似于书尾的结构。在一本书的结尾,你会看到几页文字,你可以在哪里找到这些文字。这些页面是索引,数据库也是如此。索引包含键及其位置。它可以帮助您找到行的位置。如果是一本书,索引会告诉你在哪一页可以找到这个词。数据库索引具有相同的功能
正如许多人提到的,索引是用b树实现的。然而,这只是一个实现细节。有许多方法可以实现索引 默认情况下,键在MS SQL Server中具有群集索引 键是每行的唯一值 索引用于最大限度地提高数据库性能。您可以根据需要创建索引。 有不同类型的索引 e、 g
- 位图索引
- 稠密指数
- 稀疏索引
- 覆盖指数
大多数DBMS会在声明主键时为您创建索引。这种行为有两个原因。首先,在一个大表上检测没有索引的重复项需要很长时间。第二个问题是,您可能会根据主键进行大量查找,而这些查找使用索引运行得更快。键是唯一标识每一行的字段或字段集。通常,会有一个键被指定为主键,而现在这似乎是一个本身通常没有意义的字段(很像页码,它只在识别页面上的内容时才很重要) 一个表可能有另一个表的键,称为外键。例如,在线商店的数据库中可能有一个订单表,每个订单都有一个关联的客户,因此订单表中的每一行都有一个客户表的外键 索引是基于表中一个或多个字段的数据结构,它允许基于这些字段快速访问表。索引可以标识单个行(例如,客户电子邮件地址的索引),也可以指示组(例如,客户的免税状态)。它的使用很像一本书的索引,或者像一个反向目录(例如按电话号码排序的电话簿)
键主要是考虑数据库的一种方式(尽管通常可以告诉数据库键,因此数据库可以拒绝具有重复键的行)。索引是使数据库工作更快的一种方法。字段或属性,用于定义关系数据中的元组