分页-MS SQL [英] Paging - MS SQL
问题描述
你好,
我有一个具有大型数据库(MS-SQL)的大型网站(ASP.NET),我在我的网站中寻找了一种使用分页的好方法.
我找到了两种不错的方法,但是我在决定使用哪种分页方法时遇到了一个小问题,
第一种方法是使用ROW_NUMBER(),原因如下:
Hello,
I have a big web-site(ASP.NET) with a huge data-base(MS-SQL) and i searched for a good way to use paging in my web-site.
I found two good way''s to do it but i have a little problem to decide which paging way to use,
The first way to is to use ROW_NUMBER() in this why:
With ListRec As(
SELECT ROW_NUMBER() OVER(ORDER BY field1,field2) AS rownum,field1,field2,field3 FROM [MyTable] WHERE MyCondition
)
SELECT *
FROM ListRec
WHERE rownum > 90 and rownum <= 100
第二种方法是为什么使用NOT IN:
The second way to is to use NOT IN in this why:
SELECT TOP 10 field1,field2,field3 FROM [MyTable]
WHERE (field1 NOT IN (SELECT TOP 90 field1 FROM [MyTable] WHERE MyCondition ORDER BY field1,field2)) And MyCondition ORDER BY field1,field2
那么,哪种方法是最好的方法?
谢谢,
Roy Shoa.
So, Which way is the best way ?
Thanks,
Roy Shoa.
推荐答案
首选使用更好的选择
First option is better to use
使用ListRec As(
从[MyTable] WHERE MyCondition中选择ROW_NUMBER()OVER(ORDER BY field1,field2)AS rownum,field1,field2,field3
)
选择*
从ListRec
在哪里rownum> 90和rownum< = 100
With ListRec As(
SELECT ROW_NUMBER() OVER(ORDER BY field1,field2) AS rownum,field1,field2,field3 FROM [MyTable] WHERE MyCondition
)
SELECT *
FROM ListRec
WHERE rownum > 90 and rownum <= 100
这篇关于分页-MS SQL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!