1

我正在运行以下MySQL 查询

从family_type='f597'的组合中选择*;

在有大约 90,000 行的表上。如果我通过 phpMyAdmin 运行查询,运行需要 0.3 秒,但在同一主机上的我的 PHP 页面中,它始终需要大约 8 秒

为了测试它在我的页面中花费的时间,我运行它是这样的:

$secs = microtime(true);
$q = "从family_type='f597'的组合中选择*;";
$r = mysql_query($q);
$secs = round(microtime(true)-$secs, 3);
exit("$secs 秒");

表结构如下:

创建表`组合`(
  `part_no` char(7) 整理 latin1_general_ci 非空,
  `key_type` smallint(4) 无符号非空,
  `family_type` char(5) 整理 latin1_general_ci 非空,
  `year_start` varchar(6) collat​​e latin1_general_ci NOT NULL,
  `year_end` varchar(6) collat​​e latin1_general_ci NOT NULL,
  `visual` varchar(31) collat​​e latin1_general_ci NOT NULL ,
  `info_veh_0` varchar(255) collat​​e latin1_general_ci NOT NULL,
  `info_veh_1` varchar(255) collat​​e latin1_general_ci NOT NULL,
  `info_veh_2` varchar(255) collat​​e latin1_general_ci NOT NULL,
  `key` mediumint(8) unsigned NOT NULL auto_increment,
  主键(`key`)
) 引擎=MyISAM 默认字符集=latin1 排序=latin1_general_ci AUTO_INCREMENT=2349584 ;

谁能解释为什么我的程序运行相同的查询比 phpMyAdmin 慢得多?

[更新 1]我在任何其他编程之外测试了查询——我创建了一个简单的 test.php 页面,其中仅包含 mysql 连接信息和有问题的查询。所以先验地,导致延迟的不是站点编程的其他方面。

[更新 2]加载页面所需的实际时间对于 phpMyAdmin 和我的测试页面是相同的。差异可能是由于 phpMyAdmin 计算查询时间的方式。

无论如何,如果查询只需要 0.3 秒来处理,那么剩下的延迟从何而来?

4

3 回答 3

8

这可能是因为 phpMyAdmin 在屏幕后面添加了一个限制子句,因为它正在对结果进行分页。

于 2009-11-18T10:47:18.840 回答
0

当您运行 sql 查询时,您将获得所有符合您条件的记录。但是,如果您没有在页面中显示所有这些,请记录您想在网页上显示多少。我的意思是页面。

于 2009-11-18T11:27:52.720 回答
0

如果它是在一个 linux 机器上,你可以尝试使用工具“mysql”来查询服务器,如果你想检查的话。

于 2009-11-18T11:34:43.973 回答