r语言连接mysql性能_R语言与数据库交互效率问题

l 数据读取速度

sqlQuery(RODBC)与dbGetQuery(DBI)几乎无差别

但二者均没tbl(dbplyr)快,且速度差别巨大(100w数据仅需要不到1s),但tbl的问题在于数据没存在R内存中,只能在远程内存中进行简单处理,若加载进R内存则与上述两种方式速度差别不大

RODBC方式读入数据100w条

> suppressMessages(library(RODBC))

> con

> system.time({

+ UserOfflineAction

+ })

用户 系统 流逝

1.78 0.09 41.81

DBI方式读入数据100w条

> suppressMessages(library(dplyr))

> suppressMessages(library(DBI))

> conn

> system.time({

+ UserOfflineAction

+ })

用户 系统 流逝

3.22 0.25 41.75

dbplyr方式读入数据100w条

> suppressMessages(library(dbplyr))

> suppressMessages(library(dplyr))

> suppressMessages(library(DBI))

> conn

> system.time({

+ UserOfflineAction%

+ select(UserId,ExhibitorId,CardExchange,RequestInfo,BoothStayMinutes)%>%

+ data.frame

+

+ })

用户 系统 流逝

2.45 0.08 42.26

l 数据存储速度

RODBC方式存入数据4.5w条

> system.time({

+ create_table

+ Exhibit_company1_id int not null,

+ Exhibit_company2_id int not null,

+ Similirity decimal(5,2) not null,

+ Update_time datetime not null

+

+ )")

+ save_data

+ })

用户 系统 流逝

0.82 0.83 66.69

DBI方式存入数据4.5w条

> system.time({

+ create_table

+ Exhibit_company1_id int not null,

+ Exhibit_company2_id int not null,

+ Similirity decimal(5,2) not null,

+ Update_time datetime not null

+

+ )")

+

+ dbWriteTable(conn,"Company_company_sim_temp",sim_list,row.names = F,append = T,temporary=FALSE)

+ })

用户 系统 流逝

0.14 0.00 8.40

dbplyr方式存入数据4.5w条

> system.time({

+ copy_to(conn,sim_list,test=deparse(substitute(sim_list)) ,temporary = FALSE,overwrite=TRUE)

+ })

用户 系统 流逝

0.19 0.01 8.39

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值