我有一个MySQL查询,它获取17000行。如果我直接使用Putty在MySQL终端中执行该查询,则需要17到20秒才能获得所有行。这可以。
但是,当我尝试使用带有AJAX请求的PHP执行查询时,即使已缓存了此查询,也需要50到60秒才能完成请求。
我正在使用CodeIgniter PHP框架进行缓存及其AJAX请求。
我同意,与在终端中直接执行MySQL查询相比,HTTP请求和PHP执行可能会花费一些时间。
MySQL直接查询执行:20秒使用HTTP,PHP,Codeigniter和JSON格式,并将其缓存:60秒。
我猜时差太长了。
我试图执行的模型查询:
mysql> explain SELECT col1, col2, col3, col4, IFNULL(col5,'N/A') AS 'col55', `col6`, col7, col8, col9 FROM table1 LEFT JOIN table1 ON table1.fkid_colid=`voyage id` AND table1.alias_type='voyage_display' WHERE column10='voyage';
+----+-------------+--------------+------+-------------------------------------+---------+---------+------------------------------------+-------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------------+------+-------------------------------------+---------+---------+------------------------------------+-------+-------------+
| 1 | SIMPLE | table1 | ALL | NULL | NULL | NULL | NULL | 37770 | Using where |
| 1 | SIMPLE | table1 | ref | PRIMARY,fk_table1_colid_idx | PRIMARY | 4 | database.table1.column ID | 1 | Using index |
+----+-------------+--------------+------+-------------------------------------+---------+---------+------------------------------------+-------+-------------+
2 rows in set (0.00 sec)
有更长的加载时间的想法吗?您是否会为此建议任何优化技术?
是的。我只是通过分析控制器功能发现了问题。
因此,根据Codeigniter对结果进行如下分析,
控制器执行时间:27.7074秒。
之后,我在Chrome控制台上查看了完成请求所花费的时间,从那时起,我知道了一个问题。
Stalled : 17.32 s
DNS Lookup: 1.000 ms
Initial connection :262.000 ms
Request/Response TIME
Request sent 0
Waiting (TTFB) 1.03 s
Content Download 29.84 s
Total time: 48.46 s
从报告来看,最大的问题是“停滞”时间。花了17.32秒。这是由于我的代理问题而发生的,这是无法避免的,并且不会在我的客户端发生。所以它可以忽略不计。
所以,
直接查询执行17〜20秒
Ajax在浏览器端下载内容的请求:29〜30秒。
因此,下载3MB内容的区别是10秒,我的客户被接受了:)
谢谢你的回复。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句