小编rga*_*eth的帖子

INSERT ON 冲突不做任何事效率(PostgreSQL)

在 Postgres 中,如果超过 99.9% 的时间记录存在并且没有执行任何操作,则执行 \xe2\x80\x9cINSERT\xe2\x80\xa6 ON CONFLICT DO NOTHING\xe2\x80\x9d 是否效率低下?

\n

例如让\xe2\x80\x99s 说我有一个节点进程,它获取映射到行的 100k 记录,其中 99,980 条已经存在。我可以:

\n
    \n
  • 将它们全部插入,但对唯一性约束违规不执行任何操作
  • \n
  • 插入不存在的查询
  • \n
  • 全选,对\xe2\x80\x9cclient\xe2\x80\x9d这边做去重,然后只插入新的20个
  • \n
\n

第一种方法是最简单的,但我想知道它对于 Postgres 来说是否效率太低。我读到它在这样的 \xe2\x80\x9cdo Nothing\xe2\x80\x9d 情况下增加序列号,但是如果我跳过使用序列并使用我的唯一字段作为主(字符串)键,那可以吗? ?

\n

postgresql postgresql-performance

8
推荐指数
1
解决办法
4201
查看次数

标签 统计

postgresql ×1

postgresql-performance ×1