删除单面对话

时间:2014-08-04 12:20:07

标签: sql sqlite sqlperformance

我正在创建一个移动应用程序,我将数据存储到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条记录。 所以请帮助我更快地写下另一个查询。

1 个答案:

答案 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_idrecipient_id列添加索引时,查找速度会更快。