0

我想在 Orientdb 中插入唯一的对象,但是为了避免重复的对象,我进行了查询,然后如果它不存在我创建我的对象。我有数十亿个对象要插入,这需要很长时间。如何避免插入中的重复对象并具有良好的性能?

这是我的代码示例(顺便说一下,我正在使用 pyorient):

# creation object Address src
        query_ip_src = client.query("select @rid from `Address` where address_value  = '" + log_value[2] + "' parallel")
        if len(query_ip_src) == 0:
            ip_src = Address()
            ip_src.address_value = log_value[2]

            ip_src_record = client.record_create(clusters[b'address'], ip_src.to_dict())
            ip_src_rid = str(ip_src_record._rid)
        else:
            ip_src_rid = "#" + str(query_ip_src[0].rid.get())
4

1 回答 1

1

对此有一个 UPDATE UPSERT SQL 语句,例如。

UPDATE Address SET address_value = ?, otherField = ? UPSERT WHERE address_value = ?

只需确保您在相关的唯一字段上有一个唯一索引(address_value在这种情况下),这将防止数据重复

于 2017-11-24T09:01:01.463 回答