当我们数据量太大时,只查询该页的数据,分页查询数据

4 篇文章 0 订阅
2 篇文章 0 订阅
我们使用列表查询数据时,数据量少还可以,当公司数据达到上万条,上千万条是我们还能一次查询出来完吗,当然是不能的,此刻我就说一下只查询该页的数据
首先我这里使用的datatable插件,定义一个方法用来显示数据
function InitTables() {
        $('#datatable-grid').DataTable({
            searching: false,
            bLengthChange: false,
            scrollX: true,
            "bPaginate": true, //开关,是否显示分页器
            'iDisplayLength': 10, //每页初始显示20条记录
            "bSort": false, //是否可排序
            "pagingType": "first_last_numbers",
            "serverSide": true,  //是否开启服务器分页
            "columns": [
                {
                    title: 'ID序号', data: 'ID', align: 'center', width: "100px"
                },
            ],
            "ajax": {
                url: 这里是你要访问的路径,例如前缀名“window.location.protocol + "//" ”
                type: "post",  //访问类型
                contentType: "application/json;charset=utf-8",
                data: function (data) {
                    var jsonData = {
                        mothed: 'GetComeinandoutData',   //访问的方法
                        filed: JSON.stringify({
                           name: $("#name").val(),//这里就是你要查询的条件的传值
                            length: data.length,   //一页显示的数据数
                            start: data.start    //从第几条开始查询
                        }),
                        asscesstoken: CommJS.GetCookie("token")
                    };
                    return JSON.stringify(jsonData);  //传送条件到方法
                },
                dataSrc: function (json) {  //返回数据
                    //console.log(json);
                    json.recordsFiltered = json.result.total;  // 指定记录数
                    json.recordsTotal = json.result.total; // 指定页数
                    return json.result.data;
                }
            },
        });
    }

下边后台数据我都不贴了,大概讲一下
首先获取前台传过来的数据,进行条件的赋值然后进行第一个方法
第一个方法里边就是获取你要查询数据的总个数例:where就是你给条件赋值的条件
var count= BLL.ListCount(where);
下边这个就是ListCount方法,返回是总数

 public object GetCarListCount(string wherein, string whereout)
    {
        string sql = $@"select count(*) from table {where}";
        return ExecuteScalar(sql);
    }

第二个方法就是根据要查询的页数来查询数据,传入的三个值是 ()条件,要查询的开始页数,该页的长度)
var dt = BLL.List(where, start, length);

public DataTable List(string where, int start, int length)
    {
        string sql = $@" select * from table {where} order by ID desc offset {start} rows fetch next {length} rows only";
        return GetDataTable(sql);
    }

上边的offset 页数 rows fetch next 长度 rows only语句就是只查询当前页的几个数据,这样减少查询时间
我们返回数据

var obj = new
            {
                total = count,
                data = dt
            };

这样在前台就可以通过这两个字段来返回数据了

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值