数据表中的自定义分页

时间:2019-03-05 05:18:41

标签: sql datatable pagination

我有一个Web应用程序,可以从数据库中获取数据并显示在数据表中。我在执行此操作时遇到问题,因为我正在获取的数据有太多行(200 000)。因此,当我查询类似select * from table_name;的内容时 我的应用程序卡住了。

是否可以使用JavaScript处理此问题?

我尝试了分页,但是当数据表为已经渲染的数据创建分页时,我无法确定该怎么做?

有没有一种方法可以通过分页运行查询    后端?

3 个答案:

答案 0 :(得分:2)

您可以在MySQL中使用LIMITOFFSET约束进行分页。我知道一次2 lacs数据会使性能变慢。但是正如您提到的那样,您必须使用JS。因此,请明确指出,如果您希望将js作为前端,那么它将无济于事。但是正如您提到的那样,您有一个Web应用程序,如果该应用程序位于Node(as server)上,那么我可以为您提供建议,这对您有很大帮助。

使用2个变量分别命名为var_pageNovar_limit。现在使用mysql的行查询作为

select * form <tbl_name> LIMIT var_limit OFFSET (var_pageNo * var_limit);

根据此查询进行编码。将变量替换为所需的值。这样可以提高性能,并按照指定的限制获取数据。

希望这会有所帮助。

答案 1 :(得分:2)

在使用mongodb和angularjs时,我遇到了同样的问题。我使用服务器端分页。由于您有大量的记录,因此可以尝试使用相同的方法。

假设您在一页中显示25条记录。

后端:

  1. 使用COUNT查询获取记录的总数。
  2. 从table_name LIMIT * 25 OFFSET中选择* $ {req.query.pageNumber * 25} 以根据页码查询受限记录;

前端:

  1. 与其使用数据表,不如将数据显示在HTML表中。
  2. 定义下一页和上一页的按钮。
  3. 在controller / js文件中为pageNumber定义全局变量。 单击下一页按钮时,将pageNumber递增1。 按下上一个按钮时,将其递减1。
  4. 使用COUNT查询的结果将上限设置为pageNumber 变量。(如果有200条记录,则限制为200/25 = 8)。

因此基本上从table_name LIMIT 25 OFFSET中选择*     $ {req.query.pageNumber * 25}将记录数限制为25。当req.query.pageNumber = 1时,它将偏移前25条记录并发送下25条记录。同样,如果req.query.pageNumber = 2,它将抵消前2 * 25条记录并发送51-75条记录。

答案 2 :(得分:1)

有两种处理方式。

  1. 第一种方法-在客户端处理分页 从数据库获取所有数据并应用自定义分页。
  2. 第二种方法-在服务器端处理分页 每次您要调用数据库并根据页面大小获取记录时。