【问题标题】:SQL Server Index Naming Conventions [closed]SQL Server 索引命名约定 [关闭]
【发布时间】:2011-02-16 12:43:52
【问题描述】:

是否有一些标准的方法来命名 SQL Server 的索引?似乎主键索引被命名为 PK_ 而非聚集索引通常以 IX_ 开头。除了唯一索引之外,还有其他命名约定吗?

【问题讨论】:

    标签: sql-server naming-conventions indexing


    【解决方案1】:

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

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

    FK_[table]_[foreign_key_table]
    

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

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

    【讨论】:

      【解决方案2】:

      我知道一个老话题,但我想我会投入 2 美分的价值

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

      示例;

      NCAK_AccountHeader_OrganisationID_NextDate

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

      【解决方案3】:

      我用

      主键的PK_

      UK_ 用于唯一键

      IX_ 用于非聚集非唯一索引

      UX_ 用于唯一索引

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

      的形式

      【讨论】:

      • 非唯一聚集索引呢?客户体验?
      • 我从来不需要非唯一聚集索引...我意识到这是可能的,但对我来说这似乎从来都不是正确的做法。
      • 根据这里给出的答案stackoverflow.com/questions/1401572/… KEY 和 INDEX 是同义词。那么唯一键和唯一索引应该不需要不同的前缀?
      • 这是一个逻辑上的区别,如果会有外键引用我使用UniqueKey,否则我使用UniqueIndex。
      • Tahir Hassan:我想你错了,Sql Server 索引必须有一个唯一的名称。此外,我喜欢能够查看索引名称并查看它属于哪个表或视图。
      【解决方案4】:

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

      ix_tablename_col1_col2
      

      【讨论】:

      • 如何区分索引列和包含列?
      • 我很确定他只是按照它们在索引中的放置顺序列出索引列。
      • 我使用如下:IX_TableName_col1_col2-includecol1-includecol2
      猜你喜欢
      • 2010-12-18
      • 2017-10-22
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      • 2016-12-25
      相关资源
      最近更新 更多