一.語句一select top 每頁條數 from table where PK not in
(select top (頁數-1)*每頁條數 from table)
開始我始了這個方法﹐查詢前面几頁的時候還可以﹐可是越到后面頁就越慢﹐慢得有點讓人受不了二.語句二其實原理和上面差不多﹐只不過不是用子查詢﹐而是計算出要顯示的第一條記錄的主鍵declare @PK nvarchar(100)
select top (頁數-1)*每頁條數+1 @PK=PK from table
select top 每頁條數 from table where PK>=@PK
(這里默認為按主鍵升序排序)改成這樣后﹐效率暴高﹔
正在高興之余﹐我突然發現這樣寫雖然效率提高﹐但是卻有個問題!如果不是按主鍵排序﹐這樣分頁可能出錯(我認為要這樣寫﹐比較的那個字段或字段組必須是唯一的)我發現有些比較流行的分頁存儲過程也存在我說的問題:
在Baidu打"分頁存儲過程"﹐顯示的第一條記錄是﹕标题:千万数量级分页存储过程
代碼太長﹐我只把最后一個Select語句貼出:
EXEC('
DECLARE @SortColumn ' + @type + '
SET ROWCOUNT ' + @strStartRow + '
SELECT @SortColumn=' + @strSortColumn + ' FROM ' + @Tables + @strFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
SET ROWCOUNT ' + @strPageSize + '
SELECT ' + @Fields + ' FROM ' + @Tables + ' WHERE ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
')
作者是用排序字段作為比較字段的﹐如果排序字段有可能重復﹐那樣肯定就出錯了比如按時間排序﹐100頁有2006-10-1的數據﹐101頁也有2006-10-1數據﹐那么轉到101頁的時候就會出錯;這是小弟的一點心得﹐﹕)再次請各位大哥不要砸我啊
(select top (頁數-1)*每頁條數 from table)
開始我始了這個方法﹐查詢前面几頁的時候還可以﹐可是越到后面頁就越慢﹐慢得有點讓人受不了二.語句二其實原理和上面差不多﹐只不過不是用子查詢﹐而是計算出要顯示的第一條記錄的主鍵declare @PK nvarchar(100)
select top (頁數-1)*每頁條數+1 @PK=PK from table
select top 每頁條數 from table where PK>=@PK
(這里默認為按主鍵升序排序)改成這樣后﹐效率暴高﹔
正在高興之余﹐我突然發現這樣寫雖然效率提高﹐但是卻有個問題!如果不是按主鍵排序﹐這樣分頁可能出錯(我認為要這樣寫﹐比較的那個字段或字段組必須是唯一的)我發現有些比較流行的分頁存儲過程也存在我說的問題:
在Baidu打"分頁存儲過程"﹐顯示的第一條記錄是﹕标题:千万数量级分页存储过程
代碼太長﹐我只把最后一個Select語句貼出:
EXEC('
DECLARE @SortColumn ' + @type + '
SET ROWCOUNT ' + @strStartRow + '
SELECT @SortColumn=' + @strSortColumn + ' FROM ' + @Tables + @strFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
SET ROWCOUNT ' + @strPageSize + '
SELECT ' + @Fields + ' FROM ' + @Tables + ' WHERE ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
')
作者是用排序字段作為比較字段的﹐如果排序字段有可能重復﹐那樣肯定就出錯了比如按時間排序﹐100頁有2006-10-1的數據﹐101頁也有2006-10-1數據﹐那么轉到101頁的時候就會出錯;這是小弟的一點心得﹐﹕)再次請各位大哥不要砸我啊
解决方案 »
- 请问有没有讲用vs.net关于asp.net包括布局实例的书?
- 网站放到 windows server 2003服务器中,服务器在安装时设置的连接数是5,这样设置对大量用户访问有影响吗?
- 类似 淘宝的【搜索】!!!
- 数据库建表的时候,把表拆分成两个表的好,还是一个表好?
- sqldatasource问题
- 哪位有ASP.NET 2.0 多层结构的 通用的 基础框架 C#的 谢谢了。
- 招项目外包兼职ASP.NET开发人员,网上发包
- 问在.NET 下怎么实现WEB页面的打印??
- 发布一个加入正则表达式验证的textBox 控件,欢迎大家交流
- 50分求一好的关于asp.net论坛或asp.net下载的网址!!
- 问题:"虚拟路径"*.ascx"虚拟路径映射到另一个应用程序,这是不允许的"
- vs2005,在打开一个本地IIS网站[localhost:84]时提示:不是有效的虚拟路径
不过在sql2005中就不用这么麻烦了!
条件查询如何处理?主键不连续怎么办(某些记录已被删除)?...所谓鱼与熊掌,方法是为了解决实际问题存在的,合适的时候就用合适的方法此外,所谓千万级的分页实际上是没有意义的,用户凭什么要一次查询出数万条记录?假设一页显示50条,100页也就5000条,这已经是一般人能够看得过来的极限了;以CSDN为例,帖子何止千万,但也就显示20页~