此方法可以根据表中的任一个字段排序.,TOP分页)效率最高

发布时间:2020-03-12  栏目:数据  评论:0 Comments

如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。建议优化的时候,加上主键和索引,查询效率会提高。

 

方法1:适用于 SQL Server 2000/2005

  优点:此方法可以根据表中的任一个字段排序.
  缺点是效率最低

优点:此方法可以根据表中的任一个字段排序. 缺点是效率最低

比方说要从表USER中查看第10到第20条之间的数据,那么SQL是这样实现的

3.SELECT TOP 10 id,username From (SELECT TOP page*pagecount id,
username FROM tb_code ORDER BY username) DERIVEDTBL ORDER BY username
DESC

其中函数ROWNUM,用来记录每一条数据所在的位置。

Select top PageCount * From [tb_code] Where id=(select min(id)
from (select top (Page-1)*PageCount+1 id from [tb_code] order by
id desc) as t) order by id desc

1.如果有一个自动增长的id字段,则:

FROM table1WHERE id ( SELECT ISNULL(MAX(id),0) FROM ( SELECT TOP
页大小*(页数-1) id FROM table1 ORDER BY id ) A )ORDER BY id

  Select top PageCount * From [tb_code] Where id>=(select min(id)
from (select top (Page-1)*PageCount+1 id from [tb_code] order by id
desc) as t) order by id desc

方法3:适用于 SQL Server 2005

在SQL Server 2005中使用rownum分页(rownum函数使用方法介绍)

在SQL Server 2005中使用rownum分页

  定义二个变量:Page,PageCount

2.SELECT TOP 10 id,username From [tb_code] where id not in ( SELECT
TOP 20000 id FROM tb_code ORDER BY username)

  原理,根据ID计算出(Page-1)页的最小值,然后用TOP关键字及可解决问题。

SELECT * FROM (SELECT rownum rowcount,USER.* FROM USER) WHERE
ROWCOUNT =10 AND ROWCOUNT 20

2.SELECT TOP 10 id,username From [tb_code] where id not in
( SELECT TOP 20000 id FROM tb_code ORDER BY username)

1.如果有一个自动增长的id字段,则:

 
优点:此方法可以根据表中的任一个字段排序,在一个表中有几百万条记录时,仍有很高的效率,缺点是在大数据量的情况下效率略逊于第一种

相关文章

留下评论

网站地图xml地图