从数据库获取最少数据的最快方法

时间:2018-03-22 14:36:44

标签: r postgresql

我有一个Postgres数据库。我想从某个表中找到名为calendarid的列的最小值,该列的类型为整数,格式为yyyymmdd。我可以通过以下代码完成此操作。

get_history_startdate <- function(src) {
  get_required_table(src) %>% # This gives me the table tbl(src, "table_name")
    select(calendarid) %>%
    as_data_frame %>%
    collect() %>%
    min() # Result : 20150131
}

但是这种方法非常慢,因为它将数据库中的所有数据加载到内存中。任何想法我怎样才能改进它?

2 个答案:

答案 0 :(得分:2)

get_required_table(src) %>% 
  summarise(max(calendarid, na.rm = TRUE)) %>% 
  pull

将运行相应的SQL查询。

答案 1 :(得分:1)

如果您只想在整个表格中使用calendarid列的最小值,请使用以下内容:

SELECT MIN(calendarid) AS min_calendarid
FROM your_table;

我并不完全知道你的R代码在幕后做什么,但是如果它将整个表从Postgres引入R,那么它就非常浪费了。如果是这样,那么直接在Postgres上运行上述查询可以提高性能。