Почему dbGetQuery занимает так много времени, когда количество столбцов велико? - PullRequest
0 голосов
/ 26 сентября 2018

Я озадачен, почему простой запрос занимает столько времени при выполнении через RPostgreSQL, но почти мгновенно завершается через другого клиента.У меня есть база данных Postgresql ncol = 500 и nrow = 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

Однако я могу запустить SELECT * FROM detailed; через 0,5 секунды через другого клиента.

Почему этозапрос занимает так много времени для запуска?Что я могу сделать, чтобы ускорить это?Может ли это быть проблема драйвера Postgres с RPostgreSQL?

...