sqlite3有时INSERT,总是RETURNING

bxgwgixi  于 2023-06-06  发布在  SQLite
关注(0)|答案(1)|浏览(225)

因此,我在某个sqlite3 DB中有一个表,它具有以下结构:

CREATE TABLE table_00 (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  value VARCHAR(100) UNIQUE NOT NULL   
);

我需要从这个表中检索id,以便在其他查询中使用它。到目前为止,这是使用以下方法完成的:

INSERT INTO table_00(value) VALUES (<some_value>) ON CONFLICT (value) DO UPDATE SET value = <some_value> RETURNING id;

这是可行的,但从长远来看,当我只打算检索与值对应的id时,它会花费太多的时间进行更新。是否有任何查询总是返回id,而不需要在值已经存在的情况下更新任何条目?我想避免执行INSERT-ON CONFLICT-DO NOTHING后接SELECT。

m0rkklqb

m0rkklqb1#

您可以尝试在更新时将value列设置为它本身,而不是外部提供的值。我不完全确定SQLite是否能检测到这种情况并对其进行优化,但值得一试。

INSERT INTO table_00(value) VALUES (<some_value>) 
ON CONFLICT (value) DO UPDATE SET value = value 
RETURNING id;

相关问题