如我设计表
Product
ID
Name
Code
...
这里面,本来我想是ID是自增的来作主键,
但是我的Code也是唯一的,他也是可以作为主键的
ID本来的作用还可以作排序先后,
但表有AddTime也是有这个功能
那我这里设计的时候
还要不要这个ID自增呢
还是设置Code字段为主键不要ID呢谢谢有什么利弊
谢谢

解决方案 »

  1.   

    如果code不会经常被修改,建议直接用code
      

  2.   

    identity(int,1,1)是个优秀的主键选择,建议保留。通常分页语句:select top 10 * from tb where id in (select top 20 id from tb order by id) order by id desc你总不想写成这样吧?
    select top 10 * from tb where AddTime in (select top 20 AddTime from tb order by AddTime) order by AddTime desc
      

  3.   

    同意,如果用有意义的字段做主键,join的字段多,会很慢。
      

  4.   

    如果存在关联表,比如说父子表,关联字段更不要用自增列,否则后期的维护量会非常大。数据量较大建议采用addtime字段进行分区,并建立此此字段的聚集索引,提高表效率。
      

  5.   


    code 同样可以 ,一般在最后加一个启用标志,如果说自定义 的话,那code的优势更明显
      

  6.   


    针对  楼主的题目,code已经唯 一
      

  7.   

    既然Code是主键,ID自增列可以不要,多余