【发布时间】:2019-09-03 09:44:35
【问题描述】:
我很困惑为什么通过 MySQLConnect() 执行一个简单的查询需要这么长时间 我有一个 MySQL 数据库 ncol = 25 和 nrow = 10000 是一个小型数据库,我想使用 MySQLConnect() 获取一些数据帧,但这总是需要很多时间
dbClearResult(dbSendQuery) #take long time but why
dbDisconnect(DBConnect) #take long time but why
我检查了 Intelnet,没问题,我使用 SequelPro 肯定很快。
这是完整的代码:
library("DBI")
library("RMySQL")
library("dplyr")
library("data.table")
MySQLConnect <- function(N=1000) {
DBConnect <- dbConnect(RMySQL::MySQL(),
user = "root",
password = "root",
dbname = "root",
host = "root",
port = 3306,
)
dbSendQuery <- dbSendQuery(DBConnect, "SELECT * FROM TABLE")
dbFetch <- dbFetch(dbSendQuery, n=N)
data.table <- data.table(dbFetch)
dbClearResult(dbSendQuery)
dbDisconnect(DBConnect)
return(data.table)
}
#platform x86_64-apple-darwin15.6.0
#arch x86_64
#os darwin15.6.0
#system x86_64, darwin15.6.0
#status
#major 3
#minor 6.1
#year 2019
#month 07
#day 05
#svn rev 76782
#language R
#version.string R version 3.6.1 (2019-07-05)
#nickname Action of the Toes
如果我发送了这个,可以立即断开连接
SHOW PROCESSLIST FOR SEARCH "SELECT * FROM TABLE" ID;
KILL THIS ID;
"Closing open result sets"
我怎样才能做到最好?
原因
dbSendQuery <- dbSendQuery(DBConnect, "SELECT * FROM TABLE") #it's not run end over so dbClearResult(dbSendQuery) and dbDisconnect(DBConnect) is waiting
【问题讨论】:
-
but it's always take a lot of time...这个脚本实际花费了多少时间,你为什么对它感到惊讶? -
可能 10 分钟或更长时间,我使用
SELECT * FROM TABLE LIMIT 10001-2 秒
标签: r