防止由于php中的大型mysql查询结果而导致长时间挂起

防止由于php中的大型mysql查询结果而导致长时间挂起,php,jquery,mysql,response-time,bigdata,Php,Jquery,Mysql,Response Time,Bigdata,我有一个复杂的MySQL查询,它会响应大量数据,结果显示此响应的PHP页面在页面完全加载之前,运行时间长达2-3分钟(DevTools),我可以看到内容,同时等待它是一个空白页面 是否有一种优雅的方法可以分割结果生成,就像在php脚本进入下一行(while循环)之前,每一行都会回显到页面上一样。可能是jQuery异步请求,也可能是其他聪明而优雅的解决方案 因此,最后我将能够在页面加载时开始查看结果,加载可能需要相同的2-3分钟,但每秒(例如)我将看到更多的行回显到页面,而不是在空白页面前等待2-

我有一个复杂的MySQL查询,它会响应大量数据,结果显示此响应的PHP页面在页面完全加载之前,运行时间长达2-3分钟(DevTools),我可以看到内容,同时等待它是一个空白页面

是否有一种优雅的方法可以分割结果生成,就像在php脚本进入下一行(while循环)之前,每一行都会回显到页面上一样。可能是jQuery异步请求,也可能是其他聪明而优雅的解决方案

因此,最后我将能够在页面加载时开始查看结果,加载可能需要相同的2-3分钟,但每秒(例如)我将看到更多的行回显到页面,而不是在空白页面前等待2-3分钟


另外,我认为它应该像一些延迟加载的图像一样工作,或者像facebook向下滚动一样加载下一个结果(但没有滚动)

您可以在mysql查询中使用limit子句,每五秒钟运行一次代码,然后使用ajax在页面上获取下一个10行。

您可以在mysql查询中使用limit子句,每五秒钟运行一次代码,然后使用ajax在页面上获取下一个10行。

上述解决方案看起来不错,因为您需要使用分页由于数据量巨大,需要创建所需的列索引,因此可以更快地检索数据。在上面的例子中,建议看起来不错,但不是每5秒触发一次。您可以在这里实现可滚动分页Ref:因为如果用户对更多的数据不感兴趣,就不需要检索并将其保存在页面中。使用loader images,这样用户将知道awaware数据仍在检索。@Senthil我将查看您提供的链接,但实际上我需要将所有数据加载到一个页面中,并开始加载onload(而不是滚动),因为最终用户应该能够在单个页面上看到所有数据,但他/她将开始处理在开始时加载的数据,而不是等待2-3分钟。上述解决方案似乎不错,因为由于数据量巨大,您需要使用分页,并且需要创建所需的列索引,因此可以更快地检索数据。在上面的例子中,建议看起来不错,但不是每5秒触发一次。您可以在这里实现可滚动分页Ref:因为如果用户对更多的数据不感兴趣,就不需要检索并将其保存在页面中。使用loader images,这样用户将知道awaware数据仍在检索。@Senthil我将查看您提供的链接,但实际上我需要将所有数据加载到一个页面中,并开始加载onload(而不是滚动),因为最终用户应该能够在单个页面上看到所有数据,但是他/她将开始处理开始时加载的数据,而不是等待2-3分钟。相反,让我们尝试优化慢速SQL语句。请提供
EXPLAIN SELECT…
SHOW CREATE TABLE
。相反,让我们尝试优化慢速SQL语句。请提供
EXPLAIN SELECT…
SHOW CREATE TABLE