sqlserver 2000 环境下我给一个字段建立唯一值索引。因为字段值有重复,所以我选择了忽略掉重复的值。但是在建立的过程中,系统还是有错误提示:在某一条记录有重复的值,然后导致建立索引失败请问这是为什么。另外,建立聚集索引的过程中为什么会产生那么大的日志空间,导致我机器空间不够用。该字段是一个文本字段,长度设置的是300 nvarchar

解决方案 »

  1.   

    CREATE   UNIQUE   NONCLUSTERED   INDEX   IX_partinfotmp   ON   partinfotmp 
      ( 
      ID 
      )   WITH   IGNORE_DUP_KEY   ON   [PRIMARY] 
    GO
      

  2.   


    选择了忽略掉重复的值>>
    其意思可不是说你在已有重复值的字段上建唯一索引时,忽略掉重复的值而是指,在往唯一索引上的资料表上INSERT资料时,若有重复的值,则会发出警告然后忽略掉重复的值. 
      

  3.   

    二楼给的语句好像是在表partinfotmp的字段ID上建立一个非聚集的独立索引。但是在建立过程中系统提示错误如下:CREATE UNIQUE INDEX终止,因为发现了索引ID17的重复键为“abcd。。”
    警告!最大键长度为900字节。索引IDXID 的最大长度为1000字节。对于某些较大的组合,插入和更新操作将失败
    语句已经终止请问我该怎么处理,删除掉这条或者把内容变短?
      

  4.   

    我换了个字段建立索引,语句如下:
    create unique nonclustered index idxso on istpall(so) with ignore_dup_key on [primary]系统建立过程中提示错误是:
    create unique index 终止,因为发现了索引 ID 17的重复值。最主要的主键为“abcdef。。”
    语句已终止
    请问这是什么问题,不是忽略掉重复写索引键值吗?无语了!
      

  5.   


    有重复值就不要指定UNIQUE呀
      

  6.   

    那这样说吧,我的目的是想让在程序中对某些字段的检索速度能够更快些,所以想对一些字段建立索引。
    这些字段在内容上都有重复的,并且都是nvarchar类型,长度都在300 nvarchar左右。记录条数在80万左右。请问我该建立什么索引,最好能够给现成的语句非常着急,所以非常感谢!
      

  7.   


    聚集索引建在一个比较短的字段上NVARCHAR(300)的字段可建非聚集索引,有重复值就不要指定UNIQUE.CREATE INDEX ix_COLN ON TableName(ColName)
      

  8.   

    问题解决了,谢谢。把unique 和 IGNORE_DUP_KEY去掉就可以了,速度也得到提高了非常感谢各位