2010-05-06 98 views
117

是否有一些标准方法来为SQL Server命名索引?看起来主键索引被命名为PK_,而非聚簇索引通常以IX_开头。除了唯一索引之外,是否有任何命名约定?SQL Server索引命名约定

回答

198

我用

PK_主键

UK_独特的键

IX_对于非群集非唯一索引

UX_ for unique indexes

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

+1

非唯一聚簇索引呢? CX? – 2011-11-30 14:45:34

+7

我从来没有需要一个非独特的聚集索引...我意识到这是可能的,但它似乎从来没有是我的正确行动方针。 – JSR 2011-12-01 16:27:23

+3

根据这里给出的答案http://stackoverflow.com/questions/1401572/what-are-differences-between-index-v-s-key-in-mysql KEY和INDEX是同义词。所以它不应该有唯一的键和唯一索引不同的前缀? – skjerdalas 2014-12-17 10:19:47

17

我通常由表的名称和它们所包含的列名索引:

ix_tablename_col1_col2 
+0

你怎么指标区分存在列和包含的列? – 2010-05-07 07:37:57

+3

我很确定他只列出索引列,按照它们被放置在索引中的顺序。 – Brett 2010-06-23 18:17:15

+0

我使用它如下:IX_TableName_col1_col2-includecol1-includecol2 – freggel 2012-02-20 08:32:37

1

我知道一个老话题的形式,但认为我会在我的2分钱小费价值

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

示例;

NCAK_AccountHeader_OrganisationID_NextDate

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

+0

为什么“AK”是唯一的? – 2011-09-29 16:10:05

+4

替代键 - http://en.wikipedia.org/wiki/Unique_key#Alternate_key – Pixelated 2011-09-29 16:23:37

7

是否值得使用与外键相关的索引的特殊前缀?我认为是这样,因为它提醒我外键的索引不是默认创建的,所以很容易看到它们是否丢失。

对于这一点,我使用的匹配外键的名称名称:

FK_[table]_[foreign_key_table] 

,或在多个外键在同一个表

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