2016-12-06 4 views
0

私はJDBCドライバを使用して、MATLABからsqliteデータベースに接続します。matlab sqliteデータベースの性能

function db_conn = openDBConnection(sqldb_obj, configOptions) 

     try 
      sqldb_obj.dbConn = database(sqldb_obj.dbName, sqldb_obj.userName, sqldb_obj.password, sqldb_obj.JDBC_SQLITE_DRIVER, sqldb_obj.DB_URL); 
      db_conn = sqldb_obj.dbConn;     
     catch runtimeError 

     end    
    end 

実行する前にこのOpenConnectionメソッド()が呼び出されるたびに():私はこのようになり、データベースを開くための関数を定義します。

function result = execute(sqldb_obj, sql_statement, varargin) 

      sqldb_obj.openDBConnection(); 

      curs = exec(sqldb_obj.dbConn, sql_statement); 

      if curs.ResultSet ~= 0     
       curs = fetch(curs); 
       if rows(curs) == 0 
        result = []; 
       else 
        result = curs.Data; 
       end 
      else 
       % for the insert query 
       result = curs.Data; 
      end 

      % Disconnect the database connection 
      close(curs);    
end 

forループにテーブルを挿入すると、パフォーマンスが非常に低下します。プロファイラから、私は関数com.mathwork.toolbox.database.closeTheDatabaseConnectionのために754.595秒かかります。

パフォーマンスを改善する方法と問題はどこにありますか?

ありがとうございました。

+0

すべてのクエリでデータベースを開いているのはなぜですか? –

+0

データベースを一度しか開くことができません。あなたは私に良い事例を紹介できますか?ありがとう。 – susanne

答えて

0

私はforループの中にgetTable()という別の関数があることがわかりました。このgetTable()では、dbを開閉します。だから時間がかかります。

関連する問題