Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使索引在技术上不唯一_Sql Server - Fatal编程技术网

Sql server 使索引在技术上不唯一

Sql server 使索引在技术上不唯一,sql-server,Sql Server,我有一个“消息”表,其中包含以下字段(与此问题相关): 我想知道如何在这两个字段上创建一个唯一的索引,我有一个问题。从技术上讲,这两个字段的组合并不是一个独特的组合(即从设计上看,没有什么可以阻止它),但实际上它将是一个独特的组合。使用此表的应用程序是一个web应用程序,因此由于页面刷新时间等原因,发件人永远无法立即发送消息 将此索引设置为唯一索引是否可以接受?如果您将其设置为唯一索引,并且您的应用程序运行速度足够快,您将收到密钥冲突 我不会让它独一无二。让这个索引独一无二的目的是什么?我想在索

我有一个“消息”表,其中包含以下字段(与此问题相关):

我想知道如何在这两个字段上创建一个唯一的索引,我有一个问题。从技术上讲,这两个字段的组合并不是一个独特的组合(即从设计上看,没有什么可以阻止它),但实际上它将是一个独特的组合。使用此表的应用程序是一个web应用程序,因此由于页面刷新时间等原因,发件人永远无法立即发送消息


将此索引设置为唯一索引是否可以接受?

如果您将其设置为唯一索引,并且您的应用程序运行速度足够快,您将收到密钥冲突


我不会让它独一无二。

让这个索引独一无二的目的是什么?我想在索引中包含DateSent并不会减少查询时间。

UNIQUE
是一个索引,同时也是一个约束。如果它必须是独一无二的,那就让它独一无二。如果您只是想提高查询性能,可以在两个字段上创建一个非唯一索引。

它是按DateTime字段排序的,因此我认为它会有所减少。我明白了,您是对的。在这种情况下,您可以创建一个简单的索引而不是唯一的。当然,web应用程序不可能立即运行?不是“立即”,但在DateTime列类型的分辨率范围内是非常可能的。我使用的系统与此完全相同,只是DateTime的分辨率限制为1秒。当系统运行速度快到每秒创建一行以上时,这真的很烦人。你的情况是一样的,只是在较小的时间尺度上。确实如此。但是如果你说
SenderID
+
DateSent
可以有重复的(我猜在极少数情况下),这是可以接受的,创建唯一索引将防止插入违反唯一约束的记录。理论上可能是这样的,但实际上不可能在一秒钟内发送两条消息-即,在发送第一条消息后,他们需要导航到“创建消息”页面,为有效消息填写至少50个字符,在系统有机会创建另一行之前,选择收件人并按send。
SenderID | int
DateSent | DateTime