可能的指数腐败?

时间:2012-06-04 20:23:16

标签: sql tsql msde

Proof

在上面的图片中,您可以看到我有一个表,当我从中查询字段的最大值时,我会根据其他查询似乎排除的where子句得到不同的结果无关紧要。

后端是MSDE 2000,前端是用VB.NET 2008编写的应用程序,使用通过VPN连接到MSDE实例的SSMS 2008R2进行验证。

这是一个来自应用程序开发的封闭系统,但是如果我能纠正造成这种情况的任何问题,我相信数据库和应用程序都会恢复运行。

问题是导致当它请求Max([record_index])+ 1,其中[station_id] = 10,该值将作为该表中已存在的记录出现,并且插入失败,因为一个独特的约束。

1 个答案:

答案 0 :(得分:1)

PK索引的重新索引解决了这个问题并使上面的Max([record_index])查询返回与Max([record_index])相同的数字WHERE ...返回相同的数字,就像它们应该的那样。所以在这一点上,索引损坏是唯一合乎逻辑的答案。数据库引擎已经12年了,这是它发生在我们身上的唯一一次,我猜我只能接受它