【发布时间】:2014-11-25 12:45:02
【问题描述】:
我正在使用 h2 数据库来存储数据。 每条记录在数据库中都必须是唯一的(在时间戳、名称、消息的组合......不会在表中出现两次的意义上是唯一的)。因此,表中的一列是记录中数据的哈希值。如果记录已经存在,为了加快搜索速度,我在哈希列上创建了一个索引。确实搜索具有给定哈希的记录非常快。 但问题是:虽然在开始插入 10k 条记录时足够快(大约需要一秒钟),但当数据库中已经有 100 万条记录时(需要一分钟),它会变得非常慢。这可能是因为新的哈希需要集成到现有的索引 b-tree 中。
有没有什么方法可以加快速度,或者有更好的方法来确保表中数据记录的唯一性?
编辑:更具体地说: 假设我的记录是具有以下字段的交易:
时间戳、类型、发件人收件人、金额、消息
一个事务应该只在表中出现一次,所以在插入一个新事务之前,我必须检查该事务是否已经在表中。由于所有字段的 sha 256 散列是唯一的,我的想法是在放置字段散列的表中添加一个“散列”列。在插入新记录之前,我计算字段的散列并查询表哈希。
【问题讨论】: