字段建立索引失败

jiangeb 2008-09-09 09:12:42
sqlserver 2000 环境下我给一个字段建立唯一值索引。因为字段值有重复,所以我选择了忽略掉重复的值。

但是在建立的过程中,系统还是有错误提示:在某一条记录有重复的值,然后导致建立索引失败

请问这是为什么。另外,建立聚集索引的过程中为什么会产生那么大的日志空间,导致我机器空间不够用。

该字段是一个文本字段,长度设置的是300 nvarchar
...全文
121 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangeb 2008-09-09
  • 打赏
  • 举报
回复
问题解决了,谢谢。把unique 和 IGNORE_DUP_KEY去掉就可以了,速度也得到提高了

非常感谢各位
一品梅 2008-09-09
  • 打赏
  • 举报
回复
建立索引
那么你建唯一性索引是什么意思?
聚集索引一个表中只能建一个,非聚集索引可以是多个,
理解聚集索引和非聚集索引的区别吗?
还有,该字段修改的频率很少吗?
Garnett_KG 2008-09-09
  • 打赏
  • 举报
回复

聚集索引建在一个比较短的字段上

NVARCHAR(300)的字段可建非聚集索引,有重复值就不要指定UNIQUE.



CREATE INDEX ix_COLN ON TableName(ColName)

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

非常着急,所以非常感谢!
一品梅 2008-09-09
  • 打赏
  • 举报
回复
索引建在文本字段中,没搞错吧,呵呵~
nzperfect 2008-09-09
  • 打赏
  • 举报
回复
有重复值,却要建立唯一值索引,于情于理都行不通,怎么可能不报错,怎么可能行得通?
Garnett_KG 2008-09-09
  • 打赏
  • 举报
回复

有重复值就不要指定UNIQUE呀
jiangeb 2008-09-09
  • 打赏
  • 举报
回复
可能我没有说清楚,要分别建立索引的这两个字段都有重复值。
jiangeb 2008-09-09
  • 打赏
  • 举报
回复
我换了个字段建立索引,语句如下:
create unique nonclustered index idxso on istpall(so) with ignore_dup_key on [primary]

系统建立过程中提示错误是:
create unique index 终止,因为发现了索引 ID 17的重复值。最主要的主键为“abcdef。。。。。”
语句已终止
请问这是什么问题,不是忽略掉重复写索引键值吗?

无语了!
jiangeb 2008-09-09
  • 打赏
  • 举报
回复
二楼给的语句好像是在表partinfotmp的字段ID上建立一个非聚集的独立索引。但是在建立过程中系统提示错误如下:

CREATE UNIQUE INDEX终止,因为发现了索引ID17的重复键为“abcd。。。。。。。。。。。”
警告!最大键长度为900字节。索引IDXID 的最大长度为1000字节。对于某些较大的组合,插入和更新操作将失败
语句已经终止

请问我该怎么处理,删除掉这条或者把内容变短?
Garnett_KG 2008-09-09
  • 打赏
  • 举报
回复

选择了忽略掉重复的值

>>
其意思可不是说你在已有重复值的字段上建唯一索引时,忽略掉重复的值

而是指,在往唯一索引上的资料表上INSERT资料时,若有重复的值,则会发出警告

然后忽略掉重复的值.

jiangeb 2008-09-09
  • 打赏
  • 举报
回复
请问二楼给的语句是什么意思呀?

另外,三楼的意思是什么? 难道我先要把重复值去掉才行?

谢谢
utpcb 2008-09-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Garnett_KG 的回复:]

在一个长度是300的字符型字段上建聚集索引可不是一个好的选择。
[/Quote]

但是在建立的过程中,系统还是有错误提示:在某一条记录有重复的值,然后导致建立索引失败

请问这是为什么。
那应该是你重复值去完全掉
水族杰纶 2008-09-09
  • 打赏
  • 举报
回复
CREATE UNIQUE NONCLUSTERED INDEX IX_partinfotmp ON partinfotmp
(
ID
) WITH IGNORE_DUP_KEY ON [PRIMARY]
GO
Garnett_KG 2008-09-09
  • 打赏
  • 举报
回复

在一个长度是300的字符型字段上建聚集索引可不是一个好的选择。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧