MySQL的C API支持批量更新吗?我正在编写一个应用程序,其中某些事务是以大批量进行处理的。如果在日志记录过程中,每次插入都执行一次调用DB,那么效率将非常低。C语言有没有类似于Java的API用于批量SQL更新?谢谢你,N.
pqwbnv8z1#
您有几个选项可以帮助加快MySQL中的INSERT:
INSERT
LOAD DATA INFILE
jvidinwx2#
是的,有,即使没有任何单独的功能。看看:http://dev.mysql.com/doc/refman/5.0/en/c-api-multiple-queries.html您必须指定mysql_real_query()应该解析多个语句,并提前在连接或使用mysql_set_server_option()时启用一个标志。
mysql_set_server_option(&mysql, MYSQL_OPTION_MULTI_STATEMENTS_ON);
字符串这是php如何实现mysqli_multi_query()的:
PHP_FUNCTION(mysqli_multi_query) { // ... MYSQLI_ENABLE_MQ; if (mysql_real_query(mysql->mysql, query, query_len)) { // ... MYSQLI_DISABLE_MQ; // ... RETURN_FALSE; } RETURN_TRUE; }
型MYSQLI_ENABLE_MQ宏的计算结果是我上面提供的代码。
2条答案
按热度按时间pqwbnv8z1#
您有几个选项可以帮助加快MySQL中的
INSERT
:INSERT
语句插入多行。请参阅“INSERT Syntax”。INSERT
速度的技巧。LOAD DATA INFILE
可以实现批量数据加载的最佳性能。这比使用INSERT
快20倍。请参阅“LOAD DATA INFILE Syntax”。jvidinwx2#
是的,有,即使没有任何单独的功能。看看:
http://dev.mysql.com/doc/refman/5.0/en/c-api-multiple-queries.html
您必须指定mysql_real_query()应该解析多个语句,并提前在连接或使用mysql_set_server_option()时启用一个标志。
字符串
这是php如何实现mysqli_multi_query()的:
型
MYSQLI_ENABLE_MQ宏的计算结果是我上面提供的代码。