网站中有这样一个页面:该页面是一个汇总的页面,有6个模块,分别显示6个分类的前6条信息。现在我的做法是一次性把这6个分类的前6条信息都查出来,然后遍历输出到页面上,因数据量较大,所以这个查询很慢,这个查询每执行一次,查询时间都在2秒左右,求好的思路来实现这个功能。3q。。
解决方案 »
- .htm页面如何使用.net中的.master模板,可以吗
- netadvantage ultrawebgrid不分页使用ajax方式加载数据
- DataList绑定问题~,请高手指点
- 救命啊(谢谢各位了)显示SQL 2000所有表之间的关系,以可视化方式显示
- 方法签名具有无效的调用约定。 (异常来自 HRESULT:0x80131239)
- GridView和CheckBox结合使用的问题
- HttpWebRequest的问题请高手解答!!
- 请帮忙看一下小问题 几行代码
- 請教ASP.NET如何調用OUTLOOK的地址本(通信錄)
- 直接从数据库中下载文件的进一步探讨!
- 按F10不能逐步走断点
- 在拉滚动条停止时,怎么取到滚动条停止时显示的是第几条记录,并将前面的记录删除掉
这点东西不应该会慢啊。。你sql语句是肿么写的?
==========================================
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
goALTER proc [dbo].[Proc_GetHZXinXiList]
(
@num int,
@id1 int,
@id2 int,
@id3 int,
@id4 int,
@id5 int,
@id6 int,
@dqid int,
@tbname varchar(20)
)
as
declare @sql varchar(900)
declare @strdq varchar(100)
if @dqid<10
set @strdq=''
else
set @strdq='pdiqu_id = '+str(@dqid)+' and'
if EXISTS(select * from diqu where id=@dqid and parentid=0)
begin
set @sql = 'select top '+str(@num)+' id,title,content,addtime,fenlei_id from '+@tbname+' where fenlei_id = '+str(@id1)+' and pdiqu_id = '+str(@dqid)+' order by addtime desc;'
set @sql = @sql + 'select top '+str(@num)+' id,title,content,addtime,fenlei_id from '+@tbname+' where '+@strdq+' fenlei_id = '+str(@id2)+' order by addtime desc;'
set @sql = @sql + 'select top '+str(@num)+' id,title,content,addtime,fenlei_id from '+@tbname+' where '+@strdq+' fenlei_id = '+str(@id3)+' order by addtime desc;'
set @sql = @sql + 'select top '+str(@num)+' id,title,content,addtime,fenlei_id from '+@tbname+' where '+@strdq+' fenlei_id = '+str(@id4)+' order by addtime desc;'
set @sql = @sql + 'select top '+str(@num)+' id,title,content,addtime,fenlei_id from '+@tbname+' where '+@strdq+' fenlei_id = '+str(@id5)+' order by addtime desc;'
set @sql = @sql + 'select top '+str(@num)+' id,title,content,addtime,fenlei_id from '+@tbname+' where '+@strdq+' fenlei_id = '+str(@id6)
set @sql = @sql + ' order by addtime desc'
end
else
begin
set @sql = 'select top '+str(@num)+' id,title,content,addtime,fenlei_id from '+@tbname+' where mdiqu_id = '+str(@dqid)+' and fenlei_id = '+str(@id1)+' order by addtime desc;'
set @sql = @sql + 'select top '+str(@num)+' id,title,content,addtime,fenlei_id from '+@tbname+' where mdiqu_id = '+str(@dqid)+' and fenlei_id = '+str(@id2)+' order by addtime desc;'
set @sql = @sql + 'select top '+str(@num)+' id,title,content,addtime,fenlei_id from '+@tbname+' where mdiqu_id = '+str(@dqid)+' and fenlei_id = '+str(@id3)+' order by addtime desc;'
set @sql = @sql + 'select top '+str(@num)+' id,title,content,addtime,fenlei_id from '+@tbname+' where mdiqu_id = '+str(@dqid)+' and fenlei_id = '+str(@id4)+' order by addtime desc;'
set @sql = @sql + 'select top '+str(@num)+' id,title,content,addtime,fenlei_id from '+@tbname+' where mdiqu_id = '+str(@dqid)+' and fenlei_id = '+str(@id5)+' order by addtime desc;'
set @sql = @sql + 'select top '+str(@num)+' id,title,content,addtime,fenlei_id from '+@tbname+' where mdiqu_id = '+str(@dqid)+' and fenlei_id = '+str(@id6)
set @sql = @sql + ' order by addtime desc'
end
exec(@sql)
由于考虑的网站的优化 所以不考虑用ajax来实现这个功能的。还有什么好的方法吗。
亦或 拿张表存储最新的6条记录,增加一点插入成本,对几十上百条记录的表查询可想而知。