私は6530行のデータを照会してデータベースに挿入しました。うまくいけば、これをスピードアップする方法はありますか?これは7分かかりました。cプログラミングのスピードアップmysql_query
column_counterは私の行のサイズです。 snprintfを使用して値を文字列に変換しているので、mysql_queryはそれを受け入れます。
私は、コードを更新しました。これで、自動コミットが無効になります。私はmemsetを削除しました。私はセグメンテーションの失敗を避けるために必要と思った。すべての提案をありがとうございます。
mysql_autocommit(con, 0);
for(i = 0; i < column_counter; i++)
{
snprintf(querystring, sizeQuerystring,
"INSERT INTO earnings " \
"VALUES (%d, %d, %d, %d)",
column1[i], column2[i], column3[i], column4[i]);
if (mysql_query(con, querystring)) {
fprintf(stderr,"Insert failed\n");
fprintf(stderr,"%s\n",mysql_error(con));
finish_with_error(con);
}
//memset(querystring, 0, 256);
if(i - 1 == column_counter)
{
printf(" finished with earnings.csv \n", column_counter);
}
}
mysql_commit(con);
通常、挿入をトランザクションに入れると、速度が大幅に向上します。私はこれがMySQLでどのように動作するのか分かりません。インデックスが必要な場合は、すべての挿入が完了したらインデックスを作成してください。 – harandk
@harandkループのためのものは7分かかります。あなたが何を言っているのかは分かりません。 – noobprogrammer1987
に関して: 'finish_with_error(con);'は終了するか、戻る必要があります。ループを続行しないでください。 – user3629249