李洪根关于[SQL]对于分页存储过程

作者:李洪根 微软MVP1。我个人认为最好的分页方法是:Select top 10 * from 网络
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

作者:李洪根  微软MVP

1。我个人认为最好的分页方法是:

None.gif
Select
 
top
 
10
 
*
 
from
 
table
 
where
 id
>
200

写成存储过程,上面的语句要拼一下sql语句,要获得最后大于的哪一个ID号

2。那个用游标的方式,只适合于小数据量的表,如果表在一万行以上,就差劲了

你的存储过程还比不上NOT IN分页,示例:

None.gif
SELECT
 
Top
 
10
 
*
 
FROM
 Customers 
WHERE
 Customerid 
NOT
 
IN
 (
SELECT
 
TOP
 
20
 Customerid 
from
 Customers )
None.gif
declare
 @SQLStr 
varchar
(
8000
)
None.gif

set
 @SQLStr
=
'
SELECT Top 
'
+
cast
(@每页大小 
as
 
varchar
)
+
'
 * FROM 表 WHERE 主键列 NOT IN (SELECT TOP 
'
+
cast
(@每页大小
*
@第几页 
as
 
varchar
)
+
'
 主键列 from 表 )
'

None.gif

exec
(@SQLStr)

3。以下是我用存储过程分页的方式,分页一个20万行的表,结果显示在网页中,你可以看一下速度:

http://www.bizlands.com/trade/search.asp?type=s&sortid=15

4。很久前,我说过用sql的游标

游标是存放在内存中,很费内存.

游标一建立,就将相关的记录锁住,直到取消游标

游标提供了对特定集合中逐行扫描的手段,一般使用游标来逐行遍历数据,根据取出数据条件的不同进行不同的操作。而对于多表和大表中定义的游标(大的数据集合)循环很容易使程序进入一个漫长的等待甚至死机.

所以说,我个人的经验,就是一万上行上的表,不用游标.小数据量的表,适当的时候可以用游标

因为游标,遍历小数据量的行集还是不错的一个方法!

5。用临时表自定义分页和使用游标自定义分页都不好!

本文来源21aspnet,由javajgs_com转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/2797

发表评论