【问题标题】:How to Run a long SQL statement?如何运行长 SQL 语句?
【发布时间】:2020-03-06 06:05:20
【问题描述】:

我正在尝试编写一些将通过 SQL 提取信息的 R 代码,问题是我有一个很长的 Where 语句,因为我正在尝试检查很多东西。结果我收到了这个错误

postgresqlExecStatement(conn, statement, ...) 中的错误:RS-DBI 驱动程序:(无法检索结果:错误:语句太 大的。语句大小:159398497 字节。允许的最大值:16777216 bytes ) 错误:C 堆栈使用 159433302 太接近限制

有解决办法吗

【问题讨论】:

  • 转换为stored procedure
  • 您是说仅您的查询就超过 16MB?
  • 请展示一个long WHERE语句的样本。
  • @Parfait 从错误消息来看,where 语句可能是 160 MB 的更好部分...

标签: sql r postgresql


【解决方案1】:

由于WHERE 有时被称为 SQL 中的隐式连接,您可以将长时间运行的条件转换为值表并将其连接到原始记录集。

原创

SELECT t.Col1, t.Col2, t.Col3 
FROM myTable t
WHERE (t.tool = 'r' AND t.backend = 'postgres')
   OR (t.tool = 'python' AND t.backend = 'mysql')
   OR (t.tool = 'julia' AND t.backend = 'sqlite')
   ...

调整

SELECT t.Col1, t.Col2, t.Col3 
FROM myTable t
INNER JOIN myConditions c
   ON t.tool = c.tool
   AND t.backend = c.backend

我的条件

| tool   | backend  |
|--------|----------|
| r      | postgres |
| python | mysql    |
| julia  | sqlite   |

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多