当前位置: 首页 > 知识库问答 >
问题:

如何改进引发“语句超时”的后gresql请求

融伯寅
2023-03-14

请求使用postgresql抛出语句超时。

DELETE FROM my_table where my_table.id IN (
   SELECT DISTINCT b.id 
   FROM my_table a
   LEFT JOIN my_table b
   on b.rowA = a.rowA and b.rowB = true
   WHERE a.rowB = false
)

由于某些原因,我无法在postgresql上增加超时。所以,我需要改进我的要求。如何改进?也许是因为没有使用?怎么做?

谢谢你的帮助。

编辑更多信息:

我在JAVA批处理中,我收到的错误消息如下:

原因:org.postgresql.util。PSQLException:错误:由于在org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1525)的org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExcutorImpL.java:1309)在org.postgresql.core.v2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)在org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:354)在org.postgresq.jdbc.jdbcs2.AbtractJDBC2StatementExecuteUpdate(Abstract jdbc2StatementJava:308)和org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(delegating Preparedstatement.java:102)

共有2个答案

卢和昶
2023-03-14

您不能在SQL上下文中使用truefalse(即布尔文字),即使是从PL/SQL。

汪正雅
2023-03-14

我将删除distinct和left连接。

delete from my_table where my_table.id in (select b.id from tblA a, tblB b 
where a.rowB = false and b.rowa = a.rowa and b.rowb = true);

你问题的主要原因是左接合。为什么应该在表a上使用左连接,并将结果基于表b的id?如果您使用表a中的id,那么这是否有意义。从表a的角度来看,左连接将返回表a中的所有id,即使在表b中没有匹配项时也是如此。这不是我们想要的,因为它可能包含大量数据。您需要表a和表b的子集。因此,您不应该在不使用它的情况下从a(左连接)请求所有数据。Distinct还会产生性能问题。只有当它有附加价值时,才使用它。我在这里看不到附加值。

 类似资料:
  • 此请求引发了一个带有PostgreSQL的语句超时。 原因:org.postgresql.util.psqlexception:错误:由于在org.postgresql.core.v3.queryexecutorimpl.receiveerrorresponse(queryexecutorimpl.java:1525)在org.postgresql.core.v3.queryexecutorimp

  • 我使用下面的代码来创建一个条目在strapi服务器,但不幸的是,我得到了"坏请求"错误。我想不出来。请指导我如何解决这个问题。 ApiSet。班 主要活动。班 我的身体。班 还有我的模型课 数据班 属性。班 最后,我得到了如下回应: 我只是想知道我在哪里犯了错误

  • 问题内容: 我正在使用节点/快速服务器。express的默认超时为120,000 ms,但这对我来说还不够。当我的响应达到120,000 ms时,控制台将记录日志,并且页面显示错误,因此我想将超时设置为更大的值。我该怎么办? 问题答案: 考虑到问题中的日志,我假设您正在使用。关键是在服务器上设置属性(以下将超时设置为一秒钟,使用您想要的任何值): 如果您不使用express,而仅使用普通节点,则原

  • 我不知道为什么会有语法错误,因为我是基于以下原因的:http://dev.mysql.com/doc/refman/5.5/en/using-spatial-indexes.html。 我的MySQL服务器版本是:5.5.40-0Ubuntu0.14.04.1(Ubuntu)

  • 我正在尝试在弹性中索引数据,但出现超时错误。 因此,我已经尝试改变端口,并尝试增加超时。我也尝试将数据转换成json。 Data 是 Python 字典: 这是我的弹性配置文件的网络和发现部分: 最后我得到了一个错误:elasticsearch.exceptions。ConnectionTimeout:ConnectionTimeout由-ReadTimeoutError(HTTPConnecti

  • 问题内容: 在我的Web应用程序中,一些postgres sql查询需要一些时间才能执行。我只想为其中一部分设置语句超时。 查询的一部分必须通过超时取消,但是其他部分必须可以不受任何限制地工作。 在postgres中存在statement_timeout函数。 如何使用statement_timeout函数包装SqlAlchemy查询? 像这样: 对我来说,设置超时的最佳方法是这样的: SqlAl