当列数很大时,为什么dbGetQuery需要这么长时间?

时间:2018-09-25 21:29:50

标签: r r-dbi rpostgresql

我困惑为什么一个简单的查询通过RPostgreSQL执行时会花费这么长时间,却几乎可以通过另一个客户端立即完成。我有一个Postgresql数据库ncol = 500nrow = 100。我想通过dbReadTable函数将整个数据库读入一个数据帧集中。如果失败,即使通过dbGetQuery读取一行也没问题。

library(RPostgreSQL)
drv = dbDriver("PostgreSQL")
con = dbConnect(drv, dbname = "MYDBNAME", host = "MYHOST",
                port = 5432, user = "MYUSER", password = "MYPASSWORD")
before = Sys.time()
res = dbGetQuery(con, "SELECT * FROM detailed WHERE project_code='ABCD1234' LIMIT 1;")
after = Sys.time()

before2 = Sys.time()
res2 = dbReadTable(con, "detailed")
after2 = Sys.time()
dbDisconnect(con) # Close PostgreSQL connection
ellapsed = after - before
ellapsed2 = after2-before2
ellapsed
> Time difference of 50.31242 secs
ellapsed2
> Time difference of 50.38002 secs

但是,我可以在0.5秒内通过另一个客户端运行SELECT * FROM detailed;

为什么此查询需要这么长时间才能运行?我该怎么做才能加快速度?这可能是RPostgreSQL的Postgres驱动程序问题吗?

0 个答案:

没有答案