sql >> データベース >  >> RDS >> Mysql

Mysqlクエリはワークベンチではうまく機能しますが、rでは時間がかかりすぎます

    解決策は、dbGetQueryを置き換えることです。 dbSendQueryを使用 およびdbFetch 電話。

    簡単な手順は次のとおりです。

    library(RMySQL)
    
    # From OP
    con <- dbConnect(RMySQL::MySQL(),
                   dbname ="mydb",
                   host      = "localhost",
                   port  = 3306,
                   user  = "root",
                   password = "")
    
    # iterationresults is a table in your database. One can replace query with his own
    rs = dbSendQuery(con, "select * from iterationresults")
    
    # Fetch first 20 rows and repeat it for all rows  
    df = dbFetch(rs, n=20)
    
    # For repeated call
    while (!dbHasCompleted(rs)){
     df<- dbFetch(rs, n=20)
    }
    # OR Fetch all rows in one go
    df = dbFetch(rs, n=-1)
    
    # Free all resources
    dbClearResult(rs) 
    # Close connection
    dbDisconnect(con)
    # df will contain results i.e.
    df
    #   ID Truck_ID Speed trip_id
    #1  11  TTI 039     6     217
    #2  12  TTI 039     6     217
    # ........
    



    1. ストアドプロシージャでテーブルを切り捨てる

    2. エラー:メソッドまたは操作が実装されていません。 MYSQLデータベースの足場を作りながら

    3. 拡張イベントを使用して実行プランの警告をキャプチャする

    4. SQLでゼロ除算を処理する方法