MYSQL 쿼리 속도 증가에 관해 문의드립니다.

조회수 394회

RMySQL을 이용해 db를 불러오는 코드 아래 속도가 2.7초정도 걸립니다.

   conn <- dbConnect(MySQL(), host = "192.168.0.33", port=3306, user = "root", password = "kone", db = "Screening")
query<- paste("SELECT code, name, ROUND(ChangeOP, 4) AS 12MFWOP, ROUND(ChangeNP, 4) AS 12MFWNP, ROUND(ChangeOPM, 4) AS 12MFWOPM, ROUND(ChangeROE, 4) AS 12MFWROE, ROUND(ChangeSales, 4) AS 12MFWSales,year, month, day FROM Basic12MFW1D WHERE year =", year(ymd(input$Today)), "AND month = ", month(ymd(input$Today)), "And day=",day(ymd(input$Today)))
dbGetQuery(conn,"set names utf8")
data<-dbGetQuery(conn,query)
dbDisconnect(conn)
data

이런 코드가 전체 코드에서 종종 사용되다보니 전체 코드 돌리면 속도가 나오지 않아 2.7초라는 수치를 확 줄이고 싶습니다.

인터넷에서 보니 컬럼에 함수식 쓰면 느려진다고 해서

a<-Sys.time()
query<- paste("SELECT code, name, ChangeOP, ChangeNP, ChangeOPM, ChangeROE, ChangeSales ,year, month, day FROM Basic12MFW1D WHERE year =",2019, "AND month = ", 12, "And day=",26)
dbGetQuery(conn,"set names utf8")
data<-dbGetQuery(conn,query)
dbDisconnect(conn)
data
Sys.time()-a

해도 똑같이 2.7초 나옵니다.

RMySQL 자체가 느려서 그런 것인지 아니면 제가 코드를 비효율적으로 짜서 그런것인지 궁금합니다.

참고로 table의 row 수는 365*7*2000=4,000,000개 정도 입니다

  • Basic12MFW1D 테이블에 인덱스는 어떻게 걸려 있나요? 엽토군 2019.12.27 19:05
  • execution plan 을 읽을 수 있어야합니다. 일단 table의 row count 가 4백만이고 2.7초 수행할시 받은 row count 은 몇인가요? index 설정은 어떻해 되어 있나요? 정영훈 2019.12.27 19:07

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)