以下是涉及到插入表格的查询的种改进方法
)使用LOAD DATA INFILE从文本下载数据这将比使用插入语句快倍
)使用带有多个VALUES列表的INSERT语句一次插入几行这将比使用一个单行插入语句快几倍调整bulk_insert_buffer_size变量也能提高(向包含行的表格中)插入的速度
)可以对myisam表并行插入Concurrent_insert系统变量可以被设置用于修改concurrentinsert处理该变量默认设置为如果concurrent_insert被设置为并行插入就被禁用如果该变量被设置为在表的末端可以并行插入即便该表的某些行已经被删除
)使用插入延迟
如果你的客户不能或无需等待插入完成的时候这招很有用当你使用MySQL存储并定期运行需要很长时间才能完成的SELECT和UPDATE语句的时候你会发现这种情况很常见当客户使用插入延迟服务器立刻返回如果表没有被其他线程调用则行会列队等待被插入使用插入延迟的另一个好处就是从多个客户插入的情况会被绑定并记录在同一个block中这将比处理多个独立的插入要快得多
)插入之前将表锁定(只针对非事务处理型的表)
这将提高数据库性能因为索引缓沖区只是在所有的插入语句完成后才对磁盘进行一次刷新通常情况下有多少个插入语句就会有多少次索引缓沖区刷新如果你可以用一个插入语句实现所有行的插入则无需使用显式锁定语句
要想更快地对事务型表插入你应该使用START TRANSACTION和COMMIT语句而不是LOCK TABLES语句