gpt4 book ai didi

r - Fetch() 在 RSQLite 中挂起以进行大型查询

转载 作者:行者123 更新时间:2023-12-03 17:49:55 24 4
gpt4 key购买 nike

我在 R 中使用 RSQLITE 来构建数据库并执行“JOIN”操作并使用以下方法提取行:

    res<-dbSendQuery(con," SELECT DISTINCT all_transcript.transcript1 from temp LFET OUTER JOIN....")

共有 16 个 JOIN 操作。
我验证上面的命令工作正常,因为 fetch(res) 返回 500(默认)行数。此外,它仅适用于有限数量的行。但是当我提供 fetch(res,n=-1) 来提取所有行数时它会挂起。有什么想法吗?
我只是给了 fetch(res,n=4000) 并且它没有响应。

R的 session 信息:
sessionInfo():
R version 2.14.1 (2011-12-22)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=C LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats graphics grDevices utils datasets methods base

other attached packages:
[1] RSQLite_0.11.1 DBI_0.2-5

最佳答案

简单回答:重要查询的 16 个连接意味着您的查询和/或数据库设计得不好。改进方法 - 少连接:

  • 创建汇总表、非规范化表
  • 通过在查询计划中尽早对数据应用过滤器来调整查询,从而减少加入的数据
  • 将数据库保留在更强大的服务器上并使用另一个数据库引擎,并使 R 应用程序查询该数据库并将结果存储在 sqlite

  • 您也可以在查询优化和性能调优方面进行大量研究。

    关于r - Fetch() 在 RSQLite 中挂起以进行大型查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12377017/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com