Javascript 如何使用Ajax调用从MySql中拆分最大的阵列?

Javascript 如何使用Ajax调用从MySql中拆分最大的阵列?,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,我有一个大问题:在我的网站上会有一个页面,上面有一个表单,用户可以选择日期和其他选项来查看世界上发生的地震 问题在于,例如,用户是否可以查看去年发生的地震。 这个选项将返回一个非常大的数组,我认为这会降低加载速度,也许浏览器会限制文件 那么如何拆分大阵列呢 PHP $query = "SELECT * FROM earthquakes WHERE milliseconds > 0"; $query = mysqli_query($con,$query); if ($result = my

我有一个大问题:在我的网站上会有一个页面,上面有一个表单,用户可以选择日期和其他选项来查看世界上发生的地震

问题在于,例如,用户是否可以查看去年发生的地震。 这个选项将返回一个非常大的数组,我认为这会降低加载速度,也许浏览器会限制文件

那么如何拆分大阵列呢

PHP

$query = "SELECT * FROM earthquakes WHERE milliseconds > 0";
$query = mysqli_query($con,$query);

if ($result = mysqli_query($con, $query)) {
   while ($row = mysqli_fetch_assoc($result)) { // fetches a result row as an associative array
       $result[] = $row;
   }
   mysqli_free_result($result);
}

echo json_encode($result); // return value of $result
mysqli_close($con); // close connection with database
JAVASCRIPT

$.ajax({
    type: "POST",
    url: "database-sismico.php?"+query,
    success: function (result) { //Performs an async AJAX request
        if (result) {

        }
        else {
            //will print alert to advice user that there aren't quakes
        }
    },
    dataType:"json"
});
你能给我提个建议吗?
非常感谢并为我的英语感到抱歉…

虽然这个问题有点宽泛,但我可以给出一些相当标准的建议,这些建议应该可以帮助您指出正确的方向

一般来说,当您有某个列表,并且该列表可能非常大时,一种常见的技术是实现“”。从字面上说,把它变成多页

通常的方法是以某种方式传入一个页面参数(通常在查询字符串中),然后使用该参数获取一定数量的结果

在查询端,您可以使用
LIMIT
设置最大值,然后使用page参数设置
偏移量

例如,如果要每页显示200个结果,则
限制为200。如果您在第3页,则将偏移设置为
(第1页)*max
,即
(3-1)*200
400
。这将得到从结果400到结果200的结果

SELECT * FROM earthquakes WHERE milliseconds > 0 OFFSET 400 LIMIT 200
除此之外,还将返回最大数量的结果,以便您可以在前端构建适当的UI:

SELECT COUNT(1) FROM earthquakes WHERE milliseconds > 0

然后,您只需显示此页面和页面控件,就可以进行所有设置。

使用
限制
偏移
实现分页

然而,您可以将用例分为“探索少量地震”和“探索许多地震”。因此,第一个可以返回一个包含所有细节的完整列表,而另一个将返回(比如)热图。热图在后端生成,不涉及将所有行发送到前端。
一个用例或另一个用例是由匹配过滤器的行数触发的。

在SQL代码中选择TOP X对数组进行切片,并将索引保存在此处。或者在呈现结果之前,将整个数组加载到网站并在那里切片。给他们前10个数组并为下10个数组创建链接。看看分页。嗯,这是一个好主意,但我有一个疑问…你认为在加载前200个结果时,有可能显示下200个结果吗?我不想把这页分成更多的页。。。。对不起,我的英语很糟糕,您可以让JavaScript在加载一个集合后进行后续调用,这样它就会逐渐加载。这与SQL的方法相同,只是JavaScript在不同的时间进行调用。