Menu
Woocommerce Menu

查询效率会提高,此方法可以根据表中的任一个字段排序.

0 Comment

通过SQL
查询分析器,显示比较:我的结论是:分页方案二:(利用ID大于多少和SELECT
TOP分页)效率最高,需要拼接SQL语句分页方案一:(利用Not In和SELECT
TOP分页)
效率次之,需要拼接SQL语句分页方案三:(利用SQL的游标存储过程分页)
效率最差,但是最为通用

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

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

  定义二个变量:Page,PageCount

通过SQL
查询分析器,显示比较:我的结论是:分页方案二:(利用ID大于多少和SELECT
TOP分页)效率最高,需要拼接SQL语句分页方案一:(利用Not In和SELECT
TOP分页)
效率次之,需要拼接SQL语句分页方案三:(利用SQL的游标存储过程分页)
效率最差,但是最为通用

  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字段,则:

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

定义二个变量: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)

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

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

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

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

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

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

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

 

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

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

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

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图