gpt4 book ai didi

mysql - c编程加速mysql_query

转载 作者:行者123 更新时间:2023-11-29 10:33:14 24 4
gpt4 key购买 nike

我有 6530 行数据需要查询并插入到我的数据库中。有希望有办法加快速度吗?这花了 7 分钟完成。

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);

最佳答案

I have 6530 lines of data to query and insert into my database. Is there hopefully a way to speed this up? This took 7 minutes to do.

您至少可以对 MySQL API 的使用方式进行两项不同且兼容的更改:

  • 由于您正在执行的所有插入语句都具有相同的形式,并且仅插入的值不同,因此您应该能够创建 prepared statement然后您可以重复使用。在这种情况下,这可以节省大量时间,因为 SQL 只需要解析一次。

  • 因为我没有看到对 mysql_commit() 的调用,所以我假设您正在自动提交模式下操作。在同一个事务中将一堆语句一起批处理,然后一次提交它们通常会更有效。这需要disabling autocommit mode并在最后(即循环终止后)执行手动提交。

此外,虽然它不太可能对整体时间产生太大影响,但您可以在循环末尾删除 memset() 。这是毫无意义的,因为您将在下一次迭代期间覆盖相同的字节。

关于mysql - c编程加速mysql_query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46980232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com