Php 如何提高INNODB查询的速度,使其与MYISAM性能相当?

Php 如何提高INNODB查询的速度,使其与MYISAM性能相当?,php,mysql,insert,innodb,myisam,Php,Mysql,Insert,Innodb,Myisam,我最近将数据库表从MYISAM切换到了INNODB,并且在查询(主要是插入)时遇到了严重超时。我以前使用的一个函数是,Innodb构建哈希索引,它通过传递BTREE索引和使用哈希来帮助加快索引查找,这对于每个查询来说都更快。也就是说,如果慢速查询是,请从工具栏中选择foo,运行解释从栏中选择foo 检查计划,并根据需要添加索引。重新运行explain,并确保使用了索引。如果不太了解您的环境,很难说,但这可能更像是一个数据库调优问题。InnoDB在预算硬件上的速度非常慢,每次写入都会强制进行真正的

我最近将数据库表从MYISAM切换到了INNODB,并且在查询(主要是插入)时遇到了严重超时。我以前使用的一个函数是,Innodb构建哈希索引,它通过传递BTREE索引和使用哈希来帮助加快索引查找,这对于每个查询来说都更快。也就是说,如果慢速查询是
,请从工具栏中选择foo,运行
解释从栏中选择foo


检查计划,并根据需要添加索引。重新运行explain,并确保使用了索引。

如果不太了解您的环境,很难说,但这可能更像是一个数据库调优问题。InnoDB在预算硬件上的速度非常慢,每次写入都会强制进行真正的刷新。(这会影响写入,而不是读取。)

例如,您可能需要阅读以下选项:

innodb_flush_log_at_trx_commit=2
sync_binlog=0
通过避免刷新,您可以大大提高应用程序的速度,但如果服务器崩溃,则可能会导致数据丢失


如果数据丢失是你绝对无法忍受的,那么另一个选择是使用更好的硬件。

你能发布你的表定义吗?你从哪里得到“plan for”部分的?解释plan for is Oracle语法。在MySQL中,查询的前缀是EXPLAIN。是的,我的错,对不起。最近我做的Oracle比MySQL更多。:)InnoDB只使用BTREE索引。(就在注释上方)尽管InnoDB存储引擎始终会为表构造B树索引,但如果它认为这将提高性能,它也可能创建自适应哈希索引。