有20w数据
然后用datagrid自动分页我试了一下,比如查询出来结果,如select * from company where name like '%深圳%'
然后有4000多条,查出来,datagrid自己分页,我试了,速度还可以接受,不慢当然,全部数据的时候,分页就相当慢了,所以我考虑其实一般也不可能去拿20w一块分页
所以我用查询 select top 500 from company order by id
但是,就是这500条,分页就很慢,不知道怎么回事??我改成top 300还是慢,不知道datagrid是怎么处理的啊??
有没有什么好办法,马上要给别人交东西了?
然后用datagrid自动分页我试了一下,比如查询出来结果,如select * from company where name like '%深圳%'
然后有4000多条,查出来,datagrid自己分页,我试了,速度还可以接受,不慢当然,全部数据的时候,分页就相当慢了,所以我考虑其实一般也不可能去拿20w一块分页
所以我用查询 select top 500 from company order by id
但是,就是这500条,分页就很慢,不知道怎么回事??我改成top 300还是慢,不知道datagrid是怎么处理的啊??
有没有什么好办法,马上要给别人交东西了?
解决方案 »
- ExtJS中.net控件YuiGrid如何分页
- linkbutton 绑定值问题并传到下一个页面?
- b页面进入c页面时,动态将c中的链接改为传值型的:b.aspx?iCustomerId=... 注:要点击站点地图链接传递
- 大家好,关于数据集DataSet.xsd能不能像Application或Session那样存储数据?
- web farm 里面session,cookie ,cache的设置问题。
- c#里 treevie 跳转面怎么传参
- 菜鸟请教
- 求在线客服的源代码
- VS.net里的DataReader在哪里加?
- 提供入门教程:我刚从asp和javascript转到asp.net和c#
- html里的文字连接怎么触发事件啊???
- 大家好!各位朋友可否提供一些.NET和SQL server 面试的资料及题目啊?很急,谢谢各位的帮忙了!
{
Open();
DataSet myDS = new DataSet();
string sqlStr = "Select * From V_STY_LIBRARY_BOOKS Where (TYPE_NAME Like '%"+Keyword+"%') Or (NAME Like '%"+Keyword+"%') Or (AUTHORS Like '%"+Keyword+"%') Or (PUBLISHER Like '%"+Keyword+"%') Or (EXPLAIN Like '%"+Keyword+"%')";
myAdapter = new OleDbDataAdapter(sqlStr, conn);
myAdapter.Fill(myDS, startIndex, recordNum, "Books");
Close();
conn = null;
myAdapter = null;
return myDS;
}
如上,因为DataSet是存在于内存中的,所以你选出数据后不要一下都填充到DataSet里面而是分段添加,startIndex是记录起始位置,recordNum是数量,上面的代码在3000多条数据,每页10条,没有任何问题。
它也还是慢,是不是acess的什么问题呢?但是我在access里面,新建查询,然后执行各种select语句,它都挺快的
为什么,在web里面就这么慢呢?
它也还是慢,是不是acess的什么问题呢?
=======================================================
你的数据表建立主键或索引了吗?如果是这样,那就得在查询优化上多下点工夫了。
我一页就是50条,这样其实已经没有分页了,但是还是慢最早主要是图省事,因为数据只有1w,而且局域网用,所以没有什么问题现在要改改给其他人用,但是数据多了,就出问题了
这样结果是有4000多条,这样不慢啊但是,我用select top 50 * from company order by id
就慢得很明显了,实在不能理解,呵呵
我现在这个问题感觉和索引没啥关系了而且,我比较奇怪的是,如果在acces里面,在你建一个查询的时候
这个时候可以相当于测试select语句吧
这个时候我用select top 50 * from company order by id,或者top500都很快
所以我觉得20w也不是很多,只是不知道问题出在哪儿
所以肯定和数据总量还是有关系,只是我不清楚为什么我在access里面查询就很快
用asp.net来就很慢了
然后:
select * from company in 'c:\template.mdb'
试试。有五六年没用access了,可能in语法有点问题。你自己查一下联机帮助。“in”的意思是另外一个数据库。
如果你有条件,你可在SQLSERVER里面建立一个完全相同的表及数据,然后用完全相同的SQL语句进行测试,SQLSERVER里面应该不会出现类似问题.
用DataReader而不用DataSet,因为一般分页的数据只读
就快了,哪怕是用select * from company where name like '%深圳%' order by id
结果出来有4000多条,然后用datagrid自己的分页
也非常快唉,郁闷啊
select top 50 * from company where 1=1 order by id
后面加个无谓的条件,看看会不会有变化?如果可以那就简单多了.