本人模拟了论坛帖子的分页,数据量100W行,根据时间降序排序(由于时间是经常需要更新的,所以建立了非聚集索引),每页 10 条,前面的1600页,运行情况很好,时间100毫秒以下,1700页开始慢下来了,1700页至10W页时间差不多,也就几十到几百毫秒区别,大家看数据:页数 耗时(毫秒)
1 0--16
10 0--16
100 16
1000 62
1600 1001700 1500
1W 1600
2W 1625
3W 1680
4W 1730
5W 1780
6W 1830
7W 1890
8W 1940
9W 1985
10W 2060大家说说这个时间慢不慢啊????有那些地方需要改进????谢谢你的建议!!!存储过程:
CREATE PROCEDURE ListBoardPage_SP@boardid int,
@page int--传入的页数ASSET NoCount ONdeclare @datetime datetime --输出TOP N 那个datetime
declare @pages int
declare @sql nvarchar(255)
set @pages = (@page - 1) * 10 + 1--令pages = (传入的page-1) *每页数 -1set @sql = 'select top ' + cast(@pages as nvarchar(10)) + ' @datetime = LastPostTime from Dv_Topic where BoardID = ' +cast(@boardid as nvarchar(10)) + 'order by LastPostTime desc'exec sp_executeSQL @sql,N'@datetime datetime output',@datetime output
select top 10 * from Dv_Topic where boardid = @boardid and LastPostTime <= @datetime order by LastPostTime desc
GO
1 0--16
10 0--16
100 16
1000 62
1600 1001700 1500
1W 1600
2W 1625
3W 1680
4W 1730
5W 1780
6W 1830
7W 1890
8W 1940
9W 1985
10W 2060大家说说这个时间慢不慢啊????有那些地方需要改进????谢谢你的建议!!!存储过程:
CREATE PROCEDURE ListBoardPage_SP@boardid int,
@page int--传入的页数ASSET NoCount ONdeclare @datetime datetime --输出TOP N 那个datetime
declare @pages int
declare @sql nvarchar(255)
set @pages = (@page - 1) * 10 + 1--令pages = (传入的page-1) *每页数 -1set @sql = 'select top ' + cast(@pages as nvarchar(10)) + ' @datetime = LastPostTime from Dv_Topic where BoardID = ' +cast(@boardid as nvarchar(10)) + 'order by LastPostTime desc'exec sp_executeSQL @sql,N'@datetime datetime output',@datetime output
select top 10 * from Dv_Topic where boardid = @boardid and LastPostTime <= @datetime order by LastPostTime desc
GO
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货