我正在运行以下 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秒处理,延迟的其余部分来自哪里?
答案 0 :(得分:8)
这可能是因为phpMyAdmin在屏幕后面添加了一个限制条款,因为它正在对结果进行分页。
答案 1 :(得分:0)
运行sql查询时,您将获得符合条件的所有记录。但是,如果您未在页面中显示所有这些内容,请记录您希望在网页上显示的内容。我是指他们的页面。
答案 2 :(得分:0)
如果它在Linux机器上,如果要检查,可以尝试使用工具“mysql”查询服务器。