日期:2014-05-17  浏览次数:20643 次

大量数据列表显示速度问题,求一个快速显示列表解决方法
我们有一个地方房源网站(ASP+MS SQL)并发访问人数大概1000人,二手房数据最多的时候有大概3万条,数据库为SQL SERVER,列表显示需要取15个字段的值,原表大概有25个字段。

采用ASP分页类结合存储过程列表显示房源,房源是按照每条房源刷新时间排序,但现在打开房源列表非常慢。

为了让中介客户可以刷新自己的房源,我们设置每条房源每条可以刷新3次(中介用户自己设定每条房源刷新时间,我们用SQL作业每分钟检查刷新时间表,然后根据房源ID,到房源表更新刷新时间。),房源每个时间都有刷新。

我知道建立索引可能极大提高读取数据速度,但不能以刷新时间字段updatetime建立索引,因为updatetime每时每刻都在变化。

有什么好办法提高列表分页的速度吗?

------解决方案--------------------
1:要创建集聚索引。
2:updatetime可以创建索引, 定时的重建索引以及统计信息。

索引的优化方面的资料:
http://www.cnblogs.com/worfdream/articles/2840582.html
------解决方案--------------------
1、是否是服务器带宽不够,或者用户的网速慢。
2、服务器是否有其他程序运行而导致服务器性能下降。
3、确定是数据库原因,可以监视数据库,然后根据监视的数据进行分析。

针对CPU执行查询时间长,可以试试这个语句:
使用这个语句查看等待信息:
SELECT SUM(WAIT_TIME_MS) AS COUNTERS, wait_type FROM SYS.dm_os_wait_stats
GROUP BY wait_type
ORDER BY COUNTERS DESC
然后分析数据
------解决方案--------------------
这数据不多,加索引吧
------解决方案--------------------
试试另外一个思路

1、使用静态html作为列表页面
2、数据库必须保留“刷新时间”这个字段
3、列表页.html刷新时只提取出有限的几个字段进行生成
4、无论“刷新房源”的功能由谁使用,定时生成列表页
——这个需要和实际业务结合
——例如每个用户限制3天刷新一次
——根据实际的变动频率来设计列表页.html的刷新方式及频率(自动?手动?)

当然,静态html仅仅是个描述,主要不读取数据库,写成.aspx后缀也可以