处理大型数据集PHP与Javascript

时间:2014-03-12 19:12:25

标签: javascript php jquery sql

我试图找到一种方法,在处理和格式化非常大的查询数据时(仅从编码方面),使一些网页更有效率。目前php正被用于处理数据,我的理论是,结合javascript和jquery将大大加快这些数据的处理速度,因为它将抵消从服务器端到客户端的处理。这是真的?

以下是我的网页中正在进行的处理类型的示例:

$query = "Select * from large_table";

// run the query
$result = maxdb_query($link, $query); 

// very large number of rows...
while($row = maxdb_fetch_assoc($result))
{
  echo "<tr>";

  $calculation1 = $row['col1'] + $row['col2'] / $row['col3'];
  $calculation2 = row['col1'] / row['col2'] - row['col4'];
  //... more calculations

  echo "<td> " + $row['col1'] + "</td>";
  echo "<td> " + $calculation1 + "</td>";
  echo "<td> " + $calculation2 + "</td>";
  // ... etc.

  echo "</tr>";
}

感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

与转移大量数据所涉及的处理相比,基本数学中涉及的处理是微不足道的。如果您只是发送数字(一个JSON字符串?)并让JavaScript将其呈现在一个表中,您可能会看到带宽使用方面的一些改进,但是就处理而言,它几乎没有差别。

考虑在MySQL中使用LIMIT X,Y对数据进行分页。

答案 1 :(得分:1)

老实说,最大的改进是限制您在查询中返回的行数。显然,如果可以将其过滤掉,可以使用WHERE子句执行此操作。但如果您有数十万或数百万行,这可能没有多大帮助。

相反,我建议将输出限制为每次调用100到500行。然后,如果您需要查看更多内容,您可以通过几种不同的方式简单地转到下一组结果。从SQL查询的角度来看,您可以使用LIMIT和OFFSET(或使用&#34; LIMIT {offset},{row count}&#34;)。

从前端,你可以做任何事情。您可以在PHP构建每个结果页面时进行简单的分页,并在底部列出指向各个页码的链接。

您可以通过JavaScript AJAX调用将数据拉入到返回每组数据的终点,然后根据需要将其显示在页面上,从而有一个模拟此页面的页面。

或者您可以使用JavaScript进行基本相同的操作,但是采用连续滚动格式,当用户向下滚动时,列表会在其末尾添加越来越多的项目。

所有这些选项都会大大减少用户显示确定数据并大大改善体验之前的时间。

要执行AJAX选项,您可以使用jQuery的ajax函数(http://jqapi.com/#p=jQuery.ajax)或其中一个其他发送/接收函数将数据请求发送到服务器。然后只需在PHP中处理请求并返回jQuery的JSON对象来处理并添加到DOM。

另外,您应该将数据填充到输出数组中,然后在代码的一部分输出HTML,该代码专用于将HTML输出到最终用户,而不是在同一个地方组合逻辑和表示

答案 2 :(得分:0)

两种方式都将访问相同数量的数据,并且需要与SQL DB进行相同的交互。如果您遇到问题并希望更快地提供服务并减少SQL交互,我会考虑缓存。

答案 3 :(得分:0)

假设您无论如何都需要传输所有数据(用于显示),那么在客户端进行计算时可以节省效率。

更重要的是,最小化生成的数据并通过php传输可以带来更大的节省。因此,将查询输出直接发送到json字符串(或类似字符串),然后呈现完整的HTML,包括客户端的计算。

但在此之前,我建议在不进行计算的情况下运行查询,只是为了查看瓶颈是否在SQL查询本身中。