我使用 dplyr 从 sql 数据库中获取数据,它通常工作得很好。
但有时我的代码运行速度很慢,我不知道为什么。大多数时候我连接到具有 100 万行的表,我过滤一些数据,然后我使用这样的收集功能
flights <- tbl(
getDbConn("flight_data"),
in_schema(
"flights",
"usa")
) %>%
filter(destination == "east_coast") %>%
filter(city %in% c("NYC", "MIA") == F) %>%
filter(passanger_id %in% passangers$id) %>%
select(city, passanger_id, date) %>%
collect()
从数据库加载数据只需几秒钟。但有时我的代码很慢,我不知道为什么。它可能与存储在数据库中的数据类型有关,例如持续时间。在这种情况下,使用与上述相同的代码加载数据需要 10 分钟。
唯一总是跑得很快的是
flights <- tbl(
getDbConn("flight_data"),
in_schema(
"flights",
"other_table")
) %>%
select(city, passanger_id, date)
上面的代码运行几秒钟。但是,一旦我对这些数据使用收集,它就会很慢 - 10 分钟或更长时间。我很好奇收集有没有快速的选择?我试过 tbl_df 但它很慢。