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

问题描述

我有一个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);

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

解决方法

您尝试这样做吗?

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

也许您的x列未建立索引

,

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

您尝试过吗?

delete from table where x = 5;

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...