相同的MySQL查询在phpMyAdmin中需要0.3秒,在PHP中需要7.9秒 - 为什么?

时间:2009-11-18 10:38:28

标签: php mysql performance phpmyadmin

我正在运行以下 MySQL查询

select * from combinations where family_type='f597';

在一张有大约90,000行的表格上。如果我通过phpMyAdmin运行查询,则需要0.3秒才能运行,但在同一主机上的PHP页面中一直需要大约8秒

为了测试我的页面所需的时间,我按照以下方式运行:

$secs = microtime(true);
$q = "select * from combinations where family_type='f597';";
$r = mysql_query($q);
$secs = round(microtime(true)-$secs, 3);
exit("$secs seconds");

表结构如下:

CREATE TABLE `combinations` (
  `part_no` char(7) collate latin1_general_ci NOT NULL,
  `key_type` smallint(4) unsigned NOT NULL,
  `family_type` char(5) collate latin1_general_ci NOT NULL,
  `year_start` varchar(6) collate latin1_general_ci NOT NULL,
  `year_end` varchar(6) collate latin1_general_ci NOT NULL,
  `visual` varchar(31) collate latin1_general_ci NOT NULL ,
  `info_veh_0` varchar(255) collate latin1_general_ci NOT NULL,
  `info_veh_1` varchar(255) collate latin1_general_ci NOT NULL,
  `info_veh_2` varchar(255) collate latin1_general_ci NOT NULL,
  `key` mediumint(8) unsigned NOT NULL auto_increment,
  PRIMARY KEY  (`key`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2349584 ;

任何人都可以解释为什么我的程序运行相同的查询比phpMyAdmin慢得多吗?

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

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

在任何情况下,如果查询只需0.3秒处理,延迟的其余部分来自哪里?

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:0)

运行sql查询时,您将获得符合条件的所有记录。但是,如果您未在页面中显示所有这些内容,请记录您希望在网页上显示的内容。我是指他们的页面。

答案 2 :(得分:0)

如果它在Linux机器上,如果要检查,可以尝试使用工具“mysql”查询服务器。