回到目录 数据分页是这个经常说的东西,无论在WEBForm还是WinForm中它都会被单独拿出来,或者是公用组件,或者是公用类库,反正对于数据分页这个东西,总是我们关注的一个话题,但事实上,数据分页归根结底是数据库的东西,更直接的说,它是数据表的范畴,对于一个SQL请求来说,你要取数据,要取多少条,从哪条开始取,这事实上就是分页实现的原理. SQL更新到2005版之后,为开发者提供了不少函数,ROW_NUMBER() OVER ()就是其中之一,它可以为你的结果集生成一个行号,并可以快速的主位到…
在Sqlserver数据库中,如果查询表中含有自增长Id列,一般会采用select Top的方式来数据的分页操作.而实际上很多数据表设计的时候,不一定含有自增长Id列,那么数据库没有Id自增列的时候要对数据分页怎么办呢,此时则需要使用ROW_NUMBER()函数来对数据分页,ROW_NUMBER()一般与OVER(order by)一起连用. 使用Row_Number来数据分页的格式如下: With tempTb AS ( Select ROW_NUMBER() OVER(order by 排序…
回到目录 这个在SQL2005之后最见的一种分页方式,也是Linq默认生成的执行分页的方法(skip,take),当然在性能上小数量没有问题,在数据达到百万时会很慢,这是我们要清楚的,有时我们在LINQ环境下也需要分页写SQL,这时如何去分布就成为了一个很不好处 理的问题,所以大叔还是把准备的分页代码贡献一下 DECLARE @pageSize INT ; DECLARE @pageIndex INT ; SET @pageSize = 5 SET @pageIndex =2 ; --第二页,每…
回到目录 这篇文章介绍SQL中4个很有意思的函数,我称它的行标函数,它们是row_number,rank,dense_rank和ntile,下面分别进行介绍. 一 row_number:它为数据表加一个叫“行标示”的列,它在数据表中是连续的,我们必须按着某个顺序把表排序之后,才能使用row_number,看下列例子: SELECT row_number() OVER ( ORDER BY SalePrice ) AS row , * FROM Product 结果表被加上了行号:…
回到目录 对于高并发的场合下,使用UPDLOCK可以有效的控制并发更新的问题,即当一个线程在进行with(UPDLOCK)并进行update时,另一个线程将被阻塞,它会等第一个线程更新结束后,才可以进行它里面的操作,使用UPDLOCK有效的避免了并发更新而产生的数据错误的问题,如累加操作,第二个线程需要等第一个线程累加结束后,才能进行下一步的累加动作,这是我们可以接受的. 测试代码如下 BEGIN TRAN SELECT * FROM WebManageUsers WITH ( UPDLOCK…
DECLARE @pageSize INT ; DECLARE @pageIndex INT ; SET @pageSize = 5 SET @pageIndex =2 ; --第二页,每页显示5条数据 SELECT * FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY CreateDate ASC ) AS 'rowNumber' , * FROM dbo.Task_Info ) AS temp WHERE rowNumber BETWEEN ( ( ( @…
declare @pageNum int declare @pageSize int select * from (select ROW_NUMBER() over(order by a_CreationTime desc) as rowNum,* from td_Articles) as c ) ) and @pageNum * @pageSize 参考:http://www.cnblogs.com/seusoftware/p/3272632.html…