问题描述
正在做个项目BS架构,有很多页面通过gridview分页显示数据,然后页面上加了个input和提交按钮提供搜索现在我为了用户更好的体液,将提交按钮删除,通过input输入实时筛选数据。因为采用了分页,所以用jquery筛选无法实现如果不分页,太多数据,IE估计要奔溃方案1:用ajax实现,但是每次输入一个字符都要跟服务器打交道性能不怎么好方案2页面数据以dataset存储,然后采取gridview自带的控件分页,(存储过程分页dataset数保存的据都是一页一页,不是所有的数据,无法做筛选)在input上输入一个字符,就启动一个服务器事件,这个事件就是ds.tables[0].Selectt("条件"),,筛选所需要的数据,从而重新绑定因为dataset是保存在内存里,所以筛选的时候直接在内存读取我想性能应该还可以大家觉得方案2怎么样或有什么更好的方法
解决方案
解决方案二:
"跟服务器打交道"慢在你查询出太多数据时数据库系统要序列化为查询结果数据上,而数据库本身的查询并不慢(SQLServer甚至会自动使用上G内存的自动缓存)。另外一个“慢”的原因是你的查询语句根本就是用不上索引。所以如果你一次只是查询几十条数据,那么就直接跟服务器打交道就好了。以后可以考虑将SQL查询语句作为key,使用.net的Cache类创建缓存单元。但那是后话,它是基于你的查询数据库的SQLHelper上做的优化。
解决方案三:
引用1楼sp1234的回复:
"跟服务器打交道"慢在你查询出太多数据时数据库系统要序列化为查询结果数据上,而数据库本身的查询并不慢(SQLServer甚至会自动使用上G内存的自动缓存)。另外一个“慢”的原因是你的查询语句根本就是用不上索引。所以如果你一次只是查询几十条数据,那么就直接跟服务器打交道就好了。以后可以考虑将SQL查询语句作为key,使用.net的Cache类创建缓存单元。但那是后话,它是基于你的查询数据库的SQLHelper上做的优化。
是这样的,比如有一个物料表,打开页面一共有5千条记录上面有个textbox按钮做筛选比如我输入1时,就晒选物料号包含有1的字段全部显示出来,再打个2时,就晒选物料号包含有12的字段全部显示出来,依次类推。。。。所以我想页面初次加载的时候数据都保存在dataset里,然后筛选就直接在dataset中筛选,这样比每次跟数据库表打交道要快吧
解决方案四:
"我想页面初次加载的时候数据都保存在dataset里,然后筛选就直接在dataset中筛选",也就是说除了第一次数据读入dataset外,之后dataset里的数据是不更新的,那如果数据读入dataset之后又录入了新数据,那结果嘛,你懂的
解决方案五:
多数都会采用方案1,方案2一下加载太多数据到页面,对用户的体验影响非常大。
解决方案六:
你既然想实时的取结果,那就要去sql里面查了。否则你缓存的数据可能是旧的了。一下几点不妨考虑一下:1.这个增强的用户体验是否必要?使用上真的会给用户带来很大方便吗。如果用户就想查询1234号的物料,那么你在1的时候查一次,2的时候查一次,3的时候查一次。然而这三次显示的结果对用户来讲,是没有意义的--他不需要。如果是这样的话,你这个用户体验的优化除了增加成本,没有带来实际的好处。2.如果真的想按照你的想法改进,考虑一下并发数有多少?如果同时使用这个页面的人很少,那你多查几次也无妨。如果有大量的user同时使用这个页面,那么还是尽量减少查询次数。
解决方案七:
1、数据库设计合理。建立需要的字段索引可加快查询速度。2、数据库访问多用存储过程实现,要比直接写sql语句效率高一些。3、采用jquery实现异步加载数据,访问效率要高出普通页面一些。