插入一条记录所花的时间取决于下面几个因素,括号里的数字代表了该项所占的比重:
•连接数据库服务器:(3)
•将语句发给服务器:(2)
•解释语句:(1)
•插入记录:(1 x 记录条数)
•插入索引:(1 x 索引数目)
•关闭数据库连接:(1)
在此,我们没有考虑打开表初始化的时候的负载。查询每执行一次,这种负载出现一次。
加入索引的算法是B-tree算法的话,表的长度以LogN的比率降低插入索引的速度。
综上所述,我们可以使用以下的方法增加插入的速度:
1、如果我们正在同一时间,从同一个客户端向表中插入多行数据,我们可以在Insert语句中使用多个values列表,一次插入多行。这样会比一句一句地插入数据效率高。如果是往非空表里插入数据,可以调整变量 bulk_insert_buffer_size的值,以使效率更高。
2、如果是多个客户端插入多条数据,我们可以使用insert delay语句。
3、如果使用MyISAM的表在操作的过程中没有删除操作,可以使用并发插入来调高语句执行的效率。
4、当从一个文本文件中加载表时,使用load data infile语句。用这个语句通常比用insert语句插入的效率高20倍。
(待续……)