SQL Server索引命名约定


174

有一些标准方法可以为SQL Server命名索引吗?看来主键索引名为PK_,非聚集索引通常以IX_开头。除了唯一索引,还有其他命名约定吗?

Answers:


279

我用

PK_主键

UK_获得唯一密钥

IX_用于非聚集非唯一索引

UX_用于唯一索引

我所有的索引名称都采用
<index or key type>_<table name>_<column 1>_<column 2>_<column n>


1
非唯一聚集索引又如何呢?CX?
克里斯·马里西奇

7
我从来不需要非唯一的聚集索引...我意识到这是可能的,但对我而言似乎从来都不是正确的做法。
JSR

4
根据此处给出的答案stackoverflow.com/questions/1401572/…KEY和INDEX是同义词。因此,不必为唯一键和唯一索引使用不同的前缀吗?
skjerdalas 2014年

2
逻辑上的区别是,如果有外键引用,我将使用UniqueKey,否则,我将使用UniqueIndex。
JSR

1
当两个表可以具有相同的索引名称时,为什么要包含表名称?即不需要唯一性。
塔希尔·哈桑

25

我通常用表名和它们包含的列来命名索引:

ix_tablename_col1_col2

2
您如何区分索引列和包含列?
约翰·桑索

3
我很确定他只是按索引列的顺序列出索引列。
Brett 2010年

我按如下方式使用它:IX_TableName_col1_col2-includecol1-includecol2
freggel

9

与外键关联的索引是否值得一个特殊的前缀?我想是这样,因为它提醒我默认情况下不会创建外键索引,因此更容易查看它们是否丢失。

为此,我使用与外键名称匹配的名称:

FK_[table]_[foreign_key_table]

或者,如果同一表上存在多个外键

FK_[table]_[foreign_key_table]_[foreign_key_field]

1

我知道一个老话题,但以为我会花2美分

  • PKC_主键,集群
  • PKNC_主键,非群集
  • NCAK_非集群,唯一
  • CAK_群集,唯一
  • NC_非群集

例;

NCAK_AccountHeader_OrganisationID_NextDate

其中NCAK:非群集,唯一,AccountHeader:表格和OrganisationID_NextDate:列。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.