如何快速从表中删除单行?

时间:2020-09-10 08:56:15

标签: sql postgresql

我有一个PostgreSQL表,我想删除包含特定值的第一行。如果必须选择包含特定值的第一行,我将使用select x from table where x = 5 limit 1并且查询将很快-无需扫描整个表,它将在找到第一个匹配值后停止。但是,如果我在子查询中使用delete子句,它仍然会扫描整个表。

慢速查询示例:delete from table where x in (select x from table where x = 5 limit 1);

问题是找到第一个匹配值后如何使删除查询停止。在此表中,如果有帮助,我也有主键。

2 个答案:

答案 0 :(得分:1)

您尝试这样做吗?

delete from table where id in (select id from table where x = 5 limit 1);

也许您的x列未建立索引

答案 1 :(得分:1)

首先,如果x是唯一的,则在SELECT查询中不需要limit 1

您尝试过吗?

delete from table where x = 5;

不需要子查询,在SELECT查询中使用的WHERE子句可以直接在DELETE查询中使用。

请注意,如果x不是唯一的,它将删除x = 5的所有行。

相关问题