Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 在数据库中,键和索引有什么区别?_Database Design - Fatal编程技术网

Database design 在数据库中,键和索引有什么区别?

Database design 在数据库中,键和索引有什么区别?,database-design,Database Design,例如,在SQLServer中,如果我有一个设置了“unique”的索引,那么它与键有什么不同 如何知道何时使用键与索引字段?键唯一标识表中的行。索引是表中基于字段的行顺序。一个表可以有多个索引,因为索引可以是系统用来搜索并查找实际行的集合字段的特定顺序。从技术上讲,系统只能使用一个键来标识行。大多数情况下,这也是主要索引,但不必如此 唯一性是对数据的强制约束,而索引将有助于对数据库中的行进行物理排序(聚集索引)或逻辑排序(非聚集索引),以便更快地检索。具有唯一值的字段本质上是一个键。但是,键用于

例如,在SQLServer中,如果我有一个设置了“unique”的索引,那么它与键有什么不同


如何知道何时使用键与索引字段?

键唯一标识表中的行。索引是表中基于字段的行顺序。一个表可以有多个索引,因为索引可以是系统用来搜索并查找实际行的集合字段的特定顺序。从技术上讲,系统只能使用一个键来标识行。大多数情况下,这也是主要索引,但不必如此

唯一性是对数据的强制约束,而索引将有助于对数据库中的行进行物理排序(聚集索引)或逻辑排序(非聚集索引),以便更快地检索。

具有唯一值的字段本质上是一个键。但是,键用于唯一标识表中的行,而索引用于对表中的行进行排序或分组。密钥在初始设置后不应更改,因为它可能会在数据库中的其他位置被引用。但是,索引字段可以自由更改。

键用于维护数据完整性,索引用于维护数据库性能。想一想你试图解决的任何问题,这将引导你走向正确的方向。

关键应该是业务模型的行的唯一标识符。唯一索引列可以被视为“备用键”。通常SQL Server会自动为主键创建唯一索引


我还应该提到,您可以索引非唯一列;像这样的索引用于加速对索引列的查询。

一个键在幕后总是有一个索引 如果创建主键,SQL Server将创建一个群集唯一索引来支持该索引

即使在创建唯一约束时,SQL Server也将创建索引

当然,唯一约束和主键之间的区别在于,唯一约束至少允许1个空值(sql server上为1,Oracle上为1)
一个表上只能有一个主键和许多(sql server上为249)唯一约束

一个键标识存储在数据库中的行。索引是一种类似于书尾的结构。在一本书的结尾,你会看到几页文字,你可以在哪里找到这些文字。这些页面是索引,数据库也是如此。索引包含键及其位置。它可以帮助您找到行的位置。如果是一本书,索引会告诉你在哪一页可以找到这个词。数据库索引具有相同的功能


正如许多人提到的,索引是用b树实现的。然而,这只是一个实现细节。有许多方法可以实现索引

默认情况下,键在MS SQL Server中具有群集索引

键是每行的唯一值

索引用于最大限度地提高数据库性能。您可以根据需要创建索引。 有不同类型的索引 e、 g

  • 位图索引
  • 稠密指数
  • 稀疏索引
  • 覆盖指数
密钥(声明)是一种约束。如果缺少任何键数据,或者键数据与表中已存在的行重复,则可以防止将行输入表中

索引是一种数据结构,允许在索引中使用的列(字段)的给定值下快速查找一行或多行。索引还可以用来加速某些其他类型的查询。例如,合并联接使用组成联接条件的两列上的索引(如果这些索引都存在)。DBMS是否进行合并联接取决于查询优化器、表的大小以及所需索引的存在

为了让这个问题有点混淆,一些文献提到了索引用作“索引键”的列。同一文献通常将主键和外键称为“逻辑键”。同样的文献通常将键称为表的逻辑特征,而索引称为表的物理特征


大多数DBMS会在声明主键时为您创建索引。这种行为有两个原因。首先,在一个大表上检测没有索引的重复项需要很长时间。第二个问题是,您可能会根据主键进行大量查找,而这些查找使用索引运行得更快。

键是唯一标识每一行的字段或字段集。通常,会有一个键被指定为主键,而现在这似乎是一个本身通常没有意义的字段(很像页码,它只在识别页面上的内容时才很重要)

一个表可能有另一个表的键,称为外键。例如,在线商店的数据库中可能有一个订单表,每个订单都有一个关联的客户,因此订单表中的每一行都有一个客户表的外键

索引是基于表中一个或多个字段的数据结构,它允许基于这些字段快速访问表。索引可以标识单个行(例如,客户电子邮件地址的索引),也可以指示组(例如,客户的免税状态)。它的使用很像一本书的索引,或者像一个反向目录(例如按电话号码排序的电话簿)


键主要是考虑数据库的一种方式(尽管通常可以告诉数据库键,因此数据库可以拒绝具有重复键的行)。索引是使数据库工作更快的一种方法。

字段或属性,用于定义关系数据中的元组