select top 200 * from(select row_number() over(order by uid asc) as rownumber,* from moa_user ) as tb where rownumber>100000
select datediff(ms,@tdiff,getdate()) as '耗时(毫秒)'
END
PROCEDURE [dbo].[proc_select_moauser1]
AS
BEGIN
SET NOCOUNT ON;
declare @tdiff datetime
set @tdiff=getdate()
select top 200 * from(select row_number() over(order by uid asc) as rownumber,* from moa_user ) as tb where rownumber>100000
select datediff(ms,@tdiff,getdate()) as '耗时(毫秒)'
END
响应时间:156ms-210ms
方式2:
每页显示200条
分页至10万条之后的第两百条记录
Java代码
PROCEDURE [dbo].[proc_select_moauser2]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
declare @tdiff datetime
set @tdiff=getdate()
select * from(select row_number() over(order by uid asc) as rownumber,* from moa_user ) as tb where rownumber between 100000 and 100200
select datediff(ms,@tdiff,getdate()) as '耗时(毫秒)'
END
PROCEDURE [dbo].[proc_select_moauser2]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
declare @tdiff datetime
set @tdiff=getdate()
select * from(select row_number() over(order by uid asc) as rownumber,* from moa_user ) as tb where rownumber between 100000 and 100200
select datediff(ms,@tdiff,getdate()) as '耗时(毫秒)'
END
响应时间:153ms-176ms
方式3
每页显示200条
分页至10万条之后的第两百条记录
Java代码
PROCEDURE [dbo].[proc_select_moauser3]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @tdiff datetime
set @tdiff=getdate()
select top 200 * from moa_user a where uid not in(select top 100000 uid from moa_user b order by uid)
select datediff(ms,@tdiff,getdate()) as '耗时(毫秒)'
END
PROCEDURE [dbo].[proc_select_moauser3]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @tdiff datetime
set @tdiff=getdate()
select top 200 * from moa_user a where uid not in(select top 100000 uid from moa_user b order by uid)
select datediff(ms,@tdiff,getdate()) as '耗时(毫秒)'
END
响应时间:270ms-290ms
方式4:
每页显示200条
分页至10万条之后的第两百条记录
Java代码
PROCEDURE [dbo].[proc_select_moauser4]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @tdiff datetime
set @tdiff=getdate()
-- Insert statements for procedure here
select * from ( select TOP 200 * FROM ( SELECT TOP 100000 * from moa_user ORDER BY uid ASC ) as amoaUser ORDER BY uid DESC ) as bmoaUser ORDER BY uid ASC
select datediff(ms,@tdiff,getdate()) as '耗时(毫秒)'
END
PROCEDURE [dbo].[proc_select_moauser4]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @tdiff datetime
set @tdiff=getdate()
-- Insert statements for procedure here
select * from ( select TOP 200 * FROM ( SELECT TOP 100000 * from moa_user ORDER BY uid ASC ) as amoaUser ORDER BY uid DESC ) as bmoaUser ORDER BY uid ASC
select datediff(ms,@tdiff,getdate()) as '耗时(毫秒)'
END
响应时间:950ms
方式5:
每页显示200条
分页至10万条之后的第两百条记录
Java代码
PROCEDURE [dbo].[proc_select_moauser5]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
declare @tdiff datetime
set @tdiff=getdate()
-- Insert statements for procedure here
SELECT TOP 200 * FROM moa_user WHERE (uid > (SELECT MAX(uid) FROM (SELECT TOP 100000 uid FROM moa_user ORDER BY uid) AS temp_moa_user)) ORDER BY uid
select datediff(ms,@tdiff,getdate()) as '耗时(毫秒)'
END
PROCEDURE [dbo].[proc_select_moauser5]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
declare @tdiff datetime
set @tdiff=getdate()
-- Insert statements for procedure here
SELECT TOP 200 * FROM moa_user WHERE (uid > (SELECT MAX(uid) FROM (SELECT TOP 100000 uid FROM moa_user ORDER BY uid) AS temp_moa_user)) ORDER BY uid
select datediff(ms,@tdiff,getdate()) as '耗时(毫秒)'
END