我有2个数据库:localhost & remotehost。本地主机似乎运行良好,并迅速得到我的结果(低于1秒...感谢这个委员会的帮助)。使用mysqldump,我将本地主机转储到远程主机,包括表结构,索引,&数据。我期望remotehost是本地主机的虚拟副本,但是当我在远程主机上运行我的查询时,他们需要> 1分钟才能执行。解释说法甚至不同......有很多不同之处,包括将“类型”更改为“范围”以及使用的索引等等。相同的数据库,但不同的解释结果
(一些这也许可以通过强制使用主索引固定的,但我宁愿找到问题的根源,并明白为什么远程主机的行为有所不同)
我声明:
SELECT names.id, names.first, addr.last FROM names, addr WHERE names.first LIKE 'H%' AND addr.last IS NOT NULL AND names.id = addr.id GROUP BY names.id LIMIT 10
EXPLAIN语句从本地主机:
id| select_type|table|type |possible_keys |key |key_len|ref |rows|Extra
1 | SIMPLE |names|index|PRIMARY,first |PRIMARY|4 |NULL |448 |Using where
1 | SIMPLE |addr |ref |last |last |4 |files.names.last |25 |Using where
从远程主机EXPLAIN语句:
id| select_type|table|type |possible_keys |key |key_len|ref |rows|Extra
1 | SIMPLE |names|range|PRIMARY,first |first |903 |NULL |955 |Using where; Using temporary; Using filesort
1 | SIMPLE |addr |ref |last |last |4 |files.names.last |25 |Using where
UPDATE:
Localhost is using mysql version 5.1.46-log.
Remotehost is using mysql version 5.0.91-log.
投票转移到ServerFault,因为这是一个系统管理问题,而不是编程问题。 – 2011-01-24 04:12:48
请不要....这是一个MySQL问题比什么都重要。这个板上似乎有更多的mysql专家 – 2011-01-24 04:27:28
比较my.cnf文件以确保远程主机上的配置没有错误。听起来像你已经检查过,但确保remotehost上的addr.id上有一个索引。另外,尝试运行“优化表名”;在远程主机上更新统计信息。你不应该这样做,但我不知道还有什么建议。 – 2011-01-24 05:39:25