免费的jqGrid 4.8.0 - 设置分页格后重装总数(Free jqGrid 4.8.0 -

2019-10-23 04:33发布

由于与我们的DB COUNT(*)的糟糕表现(当我们处理50M记录),我们不希望在我们检索记录每片回到返回记录总数。 相反,我们希望没有它的工作。 我可以设置的记录总数为MAX_INT为内jsonReader此事:{记录:MAX_INT},但我想使这个更好。

我想要做的是设置记录MAX_INT当电网负载(这部分我知道如何),但在平行启动的背景呼吁COUNT(*),最终当真正的计数器将被检索,我想覆盖与真正的计数器,它是记录的实数MAX_INT。

如何重写记录计数器的数量?

谢谢,

Answer 1:

首先是它的众所周知的问题与COUNT(*) 如果一个人需要得到数据库的某些特定表的行只是数目 ,然后可以得到的信息非常简单,非常快

SELECT rows
FROM sys.partitions
WHERE index_id IN (0, 1)
    AND object_id = OBJECT_ID('dbo.Tablename')

在更常见的情况下(如果该数据是不仅在一个分区)应该使用SUM(rows) ,而不是rows 。 看到

我想,人们可以以同样的方式使用sys.dm_db_partition_stats

SELECT row_count
FROM sys.dm_db_partition_stats
WHERE index_id IN (0, 1) AND object_id = OBJECT_ID('dbo.Tablename')

您可以检查您的数据库,并测试是否COUNT(*)返回相同的值线以上的SQL语句或一些其他紧密变体。

独立的问题COUNT(*)你可以使用recordstotal定义为功能,并且不返回任何recordstotal从服务器。 该records是不是在大多数情况下,重要的。 如果将显示在寻呼机viewrecords: true选项使用。 您可以使用默认viewrecords: false ,并与设置没有问题records在服务器响应字段。

total服务器响应的属性将在另一侧上被用来设置lastpage的jqGrid,这将被用于验证“下一页”和寻呼机的“末页”按钮是否将被启用与否的参数。 你可以做的是

jsonReader: {
    total: function (response) {
        return parseInt(response.page) + 1;
    }
}

可替代地可以返回像任何其他值Number.MAX_VALUE例如或最大整数9007199254740992 (2 53,参见答案 )。



文章来源: Free jqGrid 4.8.0 - Setting the total number of paging post grid reload