gpt4 book ai didi

sql - SQL Server 2008 上的唯一键与唯一索引

转载 作者:行者123 更新时间:2023-12-01 17:53:05 25 4
gpt4 key购买 nike

我有一个名为 countries 的表,并且通过在 SQL Server 2008 上创建“唯一键”类型的“索引/键”来将 country_name 列定义为唯一R2。

但我有以下问题:

  1. 创建“唯一键”类型的“索引/键”会自动在此列上创建非聚集索引吗?
  2. 如果我将类型从“Unique Key”更改为“Index”,并将 IsUnique 值保留为“Yes”,那么会有什么差异吗?
  3. 那么为什么有“Unique Key”和“Index”两个选项,我认为这两个是相同的?

最佳答案

唯一约束在幕后作为唯一索引实现,因此如何指定它并不重要。我倾向于将其简单地实现为:

ALTER TABLE dbo.foo ADD CONSTRAINT UQ_bar UNIQUE(bar);

有些人创建了一个唯一的索引,例如

CREATE UNIQUE INDEX IX_UQ_Bar ON dbo.foo(bar);

区别在于意图 - 如果您要创建约束来强制执行唯一性/业务规则,则您创建一个约束,如果您这样做是为了提高查询性能,那么创建唯一索引可能更合乎逻辑。同样,在幕后,它是相同的实现,但是您到达那里所采取的道路可能有助于记录您的意图。

我认为有多种选择可以遵守以前的 Sybase 功能以及遵守 ANSI 标准(尽管唯一约束并不 100% 遵守标准,因为它们只允许一个 NULL 值 - 一个唯一的值)另一方面,索引可以通过在 SQL Server 2008 及更高版本上添加 WHERE 子句 (WHERE col IS NOT NULL) 来解决此问题。

关于sql - SQL Server 2008 上的唯一键与唯一索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10263760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com