[性能]我在首页用了21个DataList?数据量10W,好慢啊?
[性能]我在首页用了21个DataList?数据量10W,好慢啊?
怎么办?
我用了一个视图,是关于Product和UserName,通过UserID关联
产品数量10W,
21个绑定,主要从这个视图中,按照不同的要求读出来??大家有什么好的意见?
[解决办法]
21个绑定?可不可以简化啊?
[解决办法]
分页取才是硬道理
[解决办法]
可以考虑用xml处理或生成静态解决
[解决办法]
数据库中要有一个Job,每隔一段时间,将查询结果写入21个查询“快表”。
显示首页的时候不要去查原始数据。
[解决办法]
DataSet是会慢些
[解决办法]
Product和UserName,通过UserID关联
////////////////////////////////////
你可以先根据条件把主表的主键及从表的外键取出来
然后组合条件分别去查询2张表
在到应用程序里得到的表集有2个;你可以根据关系把2个表集组合成一个表;绑定上去
我很多表查询的都是这样做的;我用的4张100W的数据测试的;速度不错
[解决办法]
我写的是存储过程,是不是我处理方式不对
我查了资料:尽量少用服务器控件,用表格输出
——————————————————————————————————————————
我告诉你这个建议有多大价值:如果你的页面需要30秒钟产生,那么这样改造好之后,你的页面可以提高到29.8秒产生。
[解决办法]
1、你的 select 后面有没有加 top 10 (不要告诉我你没有加)。
2、排序字段又没有加索引,或者说,是不是把主键作为排序字段。
3、实现了以上两点,一百万条记录也是没有关系的。
4、DataList 是怎么帮定的?
<%# DataBinder.Eval(Container, "DataItem.CityID ")%>
如果你是使用的上面的形式那么强烈建议你改成下面的形式
<%# ((DataRowView)Container.DataItem)[ "CityID "] %>
5、需在页面添加 <%@ Import namespace= "System.Data "%> .
6、注意字段名的大小写(要特别注意)。如果和查询的不一致,在某些情况下会导致比 < %# DataBinder.Eval(Container.DataItem, "字段名 ") %> 还要慢。
7、如果想进一步提高速度,可采用 <%# ctype(Container.DataItem,DataRowView).Row(0) %> 的方法。不过其可读性不高。
8、可以看看这个 http://topic.csdn.net/T/20060315/18/4616896.html
[解决办法]
高手啊,学到不少
[解决办法]
感谢 jyk ,看了你 Repeater与DataGrid的效率,到底哪个的更好?!此帖让我收获颇多;
谢谢!!
[解决办法]
该说的大家都说了,另外可以使用缓存
[解决办法]
@sbqcel(上哪儿出家?)
不要太过迷信Repeater与DataGrid之间分页效率的区别,那一点点区别不足以让你有明显的察觉。
最关键的是数据源。只要最底层提取数据方法得当表现层用什么控件来展示数据性能差别不会太大!
[解决办法]
只显示10条记录的话是没有太大的区别,但是当一个页面显示21*10条记录的时候,就能感觉出来了。
[解决办法]
感谢楼主的理解。
http://topic.csdn.net/T/20060315/18/4616896.html
Repeater与DataGrid的效率 (没有分不分页的什么事情)
回过头来看看这个帖子还是很有好处的,好多人都发表了自己的意见的。
[解决办法]
收藏
[解决办法]
1、你的 select 后面有没有加 top 10 (不要告诉我你没有加)。
2、排序字段又没有加索引,或者说,是不是把主键作为排序字段。
======
这两条绝对重要,LZ肯定是这两条没弄好,否则应该很快的
[解决办法]
UP
-----------------------------------
先科数据(虚拟主机) 打造诚信第一品牌
提供预先免费测试10天
http://www.dataweb.cn
QQ:42836192
[解决办法]
这咱情况还是用静态页面比较好哦~
我首页都是用静态页面,写了个Windows服务,每隔几分钟或几个小时自动更新数据!
[解决办法]
21个datalist你可以用用户控件来做,这样效率可能要高一点。
这个网站,是我做的。http://www.zzzk.com(内容是客户放的。-_-!!)
首页上的一些栏目基本都是用用户控件做的,然后传递不同的参数来显示不同的内容,感觉速度还不错,可能是数据不是很多吧。
仅作参考。
[解决办法]
sql:select top 10 * from tablename
proc:
create proc up_GetTable
@PageSize int
as
declare sql varchar(1000)
set sql= 'select top '+str(@PageSize)+ ' * from tablename '
exec(sql)
return @@error
go
[解决办法]
新手,进来取取经,看看高手的答案啊~!
[解决办法]
进来取取经
[解决办法]
有道理, 进来接分