我正在创建一个移动应用程序,我将数据存储到sqlite中,其中性能非常重要。 为了删除单方会话,我使用以下查询:
delete from messages where id in (
select id from messages where sender_id not in(
select recipient_id from messages
)
union
select id from messages where recipient_id not in(
select sender_id from messages
)
)
但是我对它进行了分析,发现大约需要2秒才能删除大约800条记录。 所以请帮助我更快地写下另一个查询。
答案 0 :(得分:2)
不需要单独的ID查找步骤:
DELETE FROM messages
WHERE sender_id NOT IN (SELECT recipient_id FROM messages)
OR recipient_id NOT IN (SELECT sender_id FROM messages)
此外,当您向sender_id
和recipient_id
列添加索引时,查找速度会更快。