你的数据库有外键么?
你需要事务支持么?
你需要全文索引么?
你经常使用什么样的查询模式?
你的数据有多大?
思考这些问题或许能够找到合适的方向。
myisam只有索引缓存,只能管理索引,在索引数据大于分配的资源时,交由操作系统来cache,数据文件依赖于操作系统的cache,适合全文索引,这是系统内建的。count()方法使用,因为它存储了这个字段。适合insert语句。小型的项目或应用适合。
innodb部分索引文件还是数据文件,使用的是innodb buffer,不管是索引还是数据自己管理。适合需要事务处理或外键。使用sphinx也可从 innodb获得全文索引,效果不错 。适合数据量大的,因为它支持事务处理和利用事务日志故障恢复。小批量的逐渐查询比较快,大批量的不行。update语句适合,尤其并发量大的时候。innodb需要更多的内存和存储。对于支持innodb的表,影响速度的原因是因为autocomment默认设置是打开的,而且程序没有显示调用begin开始事务,导致每插入一条都自动commit一次,严重影响了速度,可以在执行sql前,调用begin,多条sql形成一个事务(即使autocomment打开也没关系了)