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

相同的MySQL查询在phpMyAdmin中需要0.3秒,在PHP中需要7.9秒——为什么?,php,mysql,performance,phpmyadmin,Php,Mysql,Performance,Phpmyadmin,我正在运行以下MySQL查询: 在一张大约有90000行的桌子上。如果我通过phpMyAdmin运行查询,运行需要0.3秒,但在同一主机上的PHP页面中,始终需要大约8秒 为了测试它在我的页面中花费的时间,我按如下方式运行它: $secs = microtime(true); $q = "select * from combinations where family_type='f597';"; $r = mysql_query($q); $secs = round(microtime(true

我正在运行以下MySQL查询:

在一张大约有90000行的桌子上。如果我通过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慢得多吗

[update 1]我在任何其他编程之外测试了查询-我创建了一个简单的test.php页面,其中只包含mysql连接信息和相关查询。所以,从本质上讲,造成延迟的不是网站编程的其他方面

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


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

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

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

当您运行sql查询时,您会得到符合您的条件的所有记录。但是,如果您没有在页面中显示所有这些内容,请记录您希望在网页上显示的内容。我的意思是翻页。

当您运行sql查询时,您会得到符合您条件的所有记录。但是,如果您没有在页面中显示所有这些内容,请记录您希望在网页上显示的内容。我的意思是呼叫他们。

如果它在linux机器上,如果您想检查,可以尝试使用工具mysql查询服务器。

如果它在linux机器上,如果要检查,可以尝试使用工具mysql查询serveur。

$变量应该转义。如果在family_类型列上添加索引,可能会获得更好的性能。$变量应该转义。如果在family_类型列上添加索引,可能会获得更好的性能。这可能是真的,为了进行测试,您可以从PHP脚本中回显SQL,并在phpMyAdmin上的查询工具中运行它。我非常专注于进入SQL窗格的查询,以至于没有考虑MyPHPAdmin为每个查询添加的限制30。当我添加limit子句时,我的测试页面给出了与MyPHPAdmin相同的结果。这可能是真的,为了测试,您可以从PHP脚本中回显SQL,并在phpMyAdmin上的查询工具中运行它。您是对的Nicky。我非常专注于进入SQL窗格的查询,以至于没有考虑MyPHPAdmin为每个查询添加的限制30。当我添加limit子句时,我的测试页面给出了与MyPHPAdmin相同的结果。 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 ;