我有一个表格,可以保存向用户发送通知所需的信息。现在这个表中的 UID 列几乎是唯一的,因为大多数情况下每个用户都订阅了一个设备。但是可能有多个具有相同 UID 的行,因此唯一索引不适用,并且由于数据的几乎唯一性,我认为通常的索引也没有用,因为搜索整个表的索引几乎需要相同的时间.
目前我想到的解决方案是以逗号分隔的格式将通知表的每一行的主要代码保存在用户表的列中。
我有一个表格,可以保存向用户发送通知所需的信息。现在这个表中的 UID 列几乎是唯一的,因为大多数情况下每个用户都订阅了一个设备。但是可能有多个具有相同 UID 的行,因此唯一索引不适用,并且由于数据的几乎唯一性,我认为通常的索引也没有用,因为搜索整个表的索引几乎需要相同的时间.
目前我想到的解决方案是以逗号分隔的格式将通知表的每一行的主要代码保存在用户表的列中。
索引不需要是唯一的才能高效,事实上,根据我的经验,我很少发现让我的索引唯一在性能方面有很大的不同。(在某些情况下,它确实取决于数据大小,但到目前为止对我来说还不够重要。)请注意,我的经验是在 Microsoft SQL Server 中,所以知道哪个数据库系统、版本和实现(如果适用)在这里会有帮助。
也就是说,在大多数现代关系数据库管理系统 (RDBMS)中,标准索引是B-Tree索引。这意味着您的数据存储在B-Tree逻辑数据结构中,该结构比整个未索引表本身的搜索效率更高。您的数据是“几乎”唯一还是完全唯一并不重要。如果您的数据完全冗余(您预期索引的列的每个值都完全相同),那么索引可能对您没有多大帮助,但在您的情况下,常规B-Tree索引听起来会很好.