因此,我在某个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。
1条答案
按热度按时间m0rkklqb1#
您可以尝试在更新时将value列设置为它本身,而不是外部提供的值。我不完全确定SQLite是否能检测到这种情况并对其进行优化,但值得一试。