使用MySQL提高大型查询插入性能

时间:2014-11-07 06:59:02

标签: php c++ mysql

我写c ++做30000 * 30000查询MySQL插入

实施例

for(i=0;i<30000*30000;i++){
// do the MySQL insert
call the function to insert code (maybe just query insert the i value)
}

我正在使用mysqlsart()mysqlclose()子功能

void mysqlstart()
{
        //MYSQL *conn_ptr;
        conn_ptr = mysql_init(NULL);

        if(!conn_ptr)
        {
            fprintf(stderr,"mysql_init failed\n");
            //return EXIT_FAILURE;
        }

        conn_ptr = mysql_real_connect(conn_ptr,"localhost","root","nlpgroup","testdb",0,NULL,0);
}

void mysqlclose()
{
        mysql_close(conn_ptr);
}

我第一次调用函数

mysqlstart();
for loop 
mysqlclose();

这在开始时会很棒,几天后我发现错误:MySQL服务器已经消失

从互联网上找到一些解决方案可能会更改max_allowed_pa​​cket或其他一些......

而且我不知道什么是适合30000 * 30000的设置

我希望在我的代码或方法中可以更改某些内容以加快查询速度

1 个答案:

答案 0 :(得分:1)

您可以这种方式一次插入多行

http://dev.mysql.com/doc/refman/5.5/en/insert.html

  

使用VALUES语法的INSERT语句可以插入多行。至   执行此操作,包括多个列值列表,每个列值都包含在其中   括号并用逗号分隔。例如:

     

INSERT INTO tbl_name(a,b,c)VALUES(1,2,3),(4,5,6),(7,8,9);