【发布时间】:2022-01-06 10:35:42
【问题描述】:
我是网络应用程序的新手,所以如果我的问题有点基本,我深表歉意。我正在开发一个带有 R 闪亮的 Web 应用程序,其中输入是来自 Azure SQL 服务器的非常大的表。它们是 20 个表,每个表按十万行和数百列包含数字、字符等。我调用它们没有问题,我的主要问题是从 Azure SQL 服务器获取所有内容需要花费大量时间。大约需要 20 分钟。因此,Web 应用程序的用户需要等待相当长的时间。 我使用 DBI 包如下:
db_connect <- function(database_config_name){
dbConfig <- config::get(database_config_name)
connection <- DBI::dbConnect(odbc::odbc(),
Driver = dbConfig$driver,
Server = dbConfig$server,
UID = dbConfig$uid,
PWD = dbConfig$pwd,
Database = dbConfig$database,
encoding = "latin1"
)
return(connection)
}
然后通过以下方式获取表格:
connection <- db_connect(db_config_name)
table <- dplyr::tbl(con, dbplyr::in_schema(fetch_schema_name(db_config_name,table_name,data_source_type), fetch_table_name(db_config_name,table_name,data_source_type)))
我搜索了很多但没有找到一个好的解决方案,我很感激任何解决方案都可以解决这个问题。
【问题讨论】:
-
This link 可能是最好的起点。有一些功能可以让您的数据库进行过滤,而您的 Shiny 应用程序可以只带回这些结果(而不是整个数据库)。传输数据可能会花费最多时间,所以这应该会对您有所帮助。
-
@p0bs 不幸的是,这并没有多大帮助。我已经厌倦了不同的功能和驱动程序。我的主机是 Azure SQL 服务器。你知道如果我尝试其他 SQL 服务器(如 Mysql、Postgress 等)或非 SQL 数据库,它是否可以更快地获取表?
标签: sql r azure shiny azure-sql-database