项目完成了,总是被一些效率问题困扰,查看一些资料,总结记录了几种sql分页的执行效率:

方法一:

 
  
  1. 1.  
  2. SELECT TOP 页大小 *  
  3. FROM table1  
  4. WHERE id NOT IN  
  5.           (  
  6.           SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id  
  7.           )  
  8. ORDER BY id 

方法二:

 

 
  
  1. SELECT TOP 页大小 *  
  2. FROM table1  
  3. WHERE id > 
  4.           (  
  5.           SELECT ISNULL(MAX(id),0)   
  6.           FROM   
  7.                 (  
  8.                 SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id  
  9.                 ) A  
  10.           )  
  11. ORDER BY id 

 

 
  
  1. SELECT TOP 页大小 *   
  2. FROM   
  3.         (  
  4.         SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1  
  5.         ) A  
  6. WHERE RowNumber > 页大小*(页数-1) 

总结:方法1利用id范围not in分页,效率次之

            方法2利用id最大值分页,效率最高

            方法3利用游标分页,效率最差