选择正确的索引以防止重复但不会影响订单

时间:2019-04-04 21:58:45

标签: sql-server indexing unique-index

我有一个包含INT IDENTITY列和VARCHAR(10)列的表。我想在UNIQUE CLUSTERED INDEX列上有一个IDENTITY(因此它是主键),并且我还想有一种方法来防止VARCHAR(10)列中的重复值。但是,数据应该在IDENTITY列中按升序排序。

例如:

CREATE TABLE ref.currency (
    currency_id INT NOT NULL IDENTITY(1,1),
    currency_name VARCHAR(10) NOT NULL
);
GO
CREATE UNIQUE CLUSTERED INDEX ix_ref_currency_id ON ref.currency(currency_id);
GO
INSERT INTO ref.currency (
    currency_name
)
VALUES 
    ('Pounds'),
    ('Euros'),
    ('Dollars');

(正如我所教的那样,我创建的是UNIQUE CLUSTERED INDEX而不是PRIMARY KEY,但是我不完全理解为什么选择一个而不是另一个的原因。从那时起,我一直坚持)

问题:

我应该向该表添加哪种类型的索引,以防止将重复的值添加到currency_name列,而不会会影响数据的顺序?

我尝试添加UNQIUE NONCLUSTERED INDEX,但是这导致数据被currency_name排序,这是我不希望的。

0 个答案:

没有答案