《.net/C#--基于aps.netMVC的高性能筛选同时多个条件的搜索》

作者:龙文浩
开发工具与关键技术: MVC/C#
撰写时间:2019年4月15号

知识点说明:
面多数据越来越多,查询的速度可能会越来越慢,对于格外注重性能的开发猿,
总是会花费心思去做一些代码来提高搜索引擎的性能,看一个例子:

在视图上写了一些显示数据的条件,都是触发单击事件,并且都带有一个定量;
这些定量会作为实参传输过去,就作为条件了(图1)
在这里插入图片描述
然后我们看看在页面的显示效果,(图2)
在这里插入图片描述
就很好的作为条件在查询数据的头部显示,用户可以点击按钮来达到需要的数据;
上图,利用post异步提交字段到服务器(控制器),然后我们在控制器上进行接收,接收的时候实例
我们再来看一个查询:(图3)
在这里插入图片描述
上图查询使用的是,Skip和Take的截取,它的效果跟SubString是类似的,
Skip截取开始位置,就是索引0,我哪里会一直为零的,等下你就知道了,
根据计算公式 (curPage - 1) * 10;前面哪个curPage我让它一值为1,
如果不做分页,可以直接写零的,做分页的话还是老老实实使用变量的做减法和乘法
来得出首行的index值,
Take就是结束的值,我使用的是自定义的值,也就是第一张图那些10,20,30等等的定量
图4
在这里插入图片描述
然后这里的pageSize的值使用的是我们自定义的分页,
并且设置displayPagingToolbarOnlyMultiPages的值为true,当只有一页的时候不会显示
分页按钮,而我们的将一直只有一页,看下图:
图5
在这里插入图片描述
这里由第一张图的点击事件触发,然后把接收到的值赋值给strnumber,
Strnumber是公共变量,存在于Session中,可以全局使用的,它的初始值为10;
然后这里可以处理显示数量:
点击 在这里插入图片描述,传输10条数据到页面,

图6
在这里插入图片描述
点击 在这里插入图片描述,传输30条数据到页面,
图7
在这里插入图片描述
点击 在这里插入图片描述,传输100条数据到页面,
图8
在这里插入图片描述
除了控制传输数据之外,还可以接收多个条件:
比如控制排列的顺序,或者匹配模糊的搜索条件;
但是点击顺序有先后,需要先点击显示数量,把显示数量存在Session中
再去点击排列顺序,或者给条件;
这主要是代码来决定执行循序的;
图9
在这里插入图片描述
代码中,是需要利用到初始查询,如下图:
图10
在这里插入图片描述
所以要求点击顺序有先后,触发onclick事件,
执行函数queryGoodsNumber:
图11
在这里插入图片描述
我们把事件传输过来的参数赋值给Session中的变量:
图12
在这里插入图片描述
然后再去重新请求查询函数,这也是使用了bsgrid不得已的事情
,而我们看第二个条件:
图13
在这里插入图片描述
它触发的函数,并不需要去重新查询,
图14
在这里插入图片描述
这里我们可以设置更多的条件,都使用下面的形式
图15
在这里插入图片描述
然后在控制器接收就可以了,这里又具有几种接收方法,
第一种如下
图16
在这里插入图片描述
第二种如下
图17
在这里插入图片描述
通过Request[“”]来接收也是完全没有问题的,
常常用户复用性高的参数,也就是
如果涉及使用次数多的字段,可以使用
图18
在这里插入图片描述
类似与上面这种声明方式;把参数变成公共的,
但如果复用性不强,直接在函数var声明就可以了。

接下来我们看查询代码;可以调用数据库存储过程,
也可以使用普通的查询,和使用ling查询:
我们先看普通的查询
图19
在这里插入图片描述
即是给个普通的条件,放在查询之前去筛选,
我们可以做个实验,在数据库中使用
Select * from YW_Goods
对比
Select * from YW_Goods
Where GoodsID > 100
这两者对比,我们是可以明显发现加了条件查询的速度快很多,
而对比
where lstGoods.GoodsNa.Contains(queryGoods)// || Goods.GoodsTypeNa.Contains(queryGoods)
图20
在这里插入图片描述
和下面对比
list = list.Where(v => v.ColourNa.Contains(queryGoods));
图21
在这里插入图片描述
虽然查询结果是一样的,但是速度明显不如在查询前加条件的快,
尤其是数据非常多的时候,
前者在性能上更胜一筹的。

我们在看一个条件的查询:
图22
在这里插入图片描述
也是非常简单,直接调用的它的Search然后赋值给参数完成查询:
图23
在这里插入图片描述
然后就是排序的查询代码如下:
图24
在这里插入图片描述
参数的发送者就是前面的Html传输过去的,在控制器作为条件就可以了:
图25
在这里插入图片描述
这里值得一提的是,如果您要按排序进行,如果字段是数字类型
在数据库请务必使用short、int、long这三种类型之一,
不然的话很有可能会无法正常的执行排序;
使用了之后就是正常的排序了;
图26
在这里插入图片描述
只要点击的条件,然后再在搜索框中模糊查询:
图27
在这里插入图片描述
可见也是按照库存正序排列的,如果商品数量大于100件,
点击了小于100,也只是显示100件,因为按索引来算,0到99就是100件。
注意的就只有一点:条件要放在查询之前,速度会比放在查询之后性能高!!!

把屏幕缩小来换个条件,
图28
在这里插入图片描述
也是按照库存来排序的,为什么呢?
如果还记得我们是通过数据存在Session中的,
您现在就能明白了,
条件一直存在。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值