马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于WindowsNT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失;分页本文的三种分页计划来自于:
只是做了更年夜数据量、分歧地位页的对照。创建表:
CREATETABLE[TestTable](
[ID][int]IDENTITY(1,1)NOTNULL,
[FirstName][nvarchar](100)COLLATEChinese_PRC_CI_ASNULL,
[LastName][nvarchar](100)COLLATEChinese_PRC_CI_ASNULL,
[Country][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
[Note][nvarchar](2000)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
GO
拔出数据:(100万条)
SETIDENTITY_INSERTTestTableON
declare@iint
set@i=1
while@i<=1000000
begin
insertintoTestTable([id],FirstName,LastName,Country,Note)values(@i,FirstName_XXX,LastName_XXX,Country_XXX,Note_XXX)
set@i=@i+1
end
SETIDENTITY_INSERTTestTableOFF
------------------------------------
分页计划一:(使用NotIn和SELECTTOP分页)
语句情势:
SELECTTOP页巨细*
FROMTestTable
WHERE(IDNOTIN
(SELECTTOP页巨细*页数id
FROM表
ORDERBYid))
ORDERBYID
-------------------------------------
分页计划二:(使用ID年夜于几和SELECTTOP分页)
SELECTTOP页巨细*
FROMTestTable
WHERE(ID>
(SELECTMAX(id)
FROM(SELECTTOP页巨细*页数id
FROM表
ORDERBYid)AST))
ORDERBYID
分页计划三:(使用SQL的游标存储历程分页)
createprocedureXiaoZhengGe
@sqlstrnvarchar(4000),--查询字符串
@currentpageint,--第N页
@pagesizeint--每页行数
as
setnocounton
declare@P1int,--P1是游标的id
@rowcountint
execsp_cursoropen@P1output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcountoutput
selectceiling(1.0*@rowcount/@pagesize)as总页数--,@rowcountas总行数,@currentpageas以后页
set@currentpage=(@currentpage-1)*@pagesize+1
execsp_cursorfetch@P1,16,@currentpage,@pagesize
execsp_cursorclose@P1
setnocountoff
测试了局:
测试均为每页10条,三个数字顺次为三种计划出了局必要的工夫,单元为秒:
第2页:18,10,29
第500页:12,8,21
第50000页:16,18,22
第500000页:24,16,22
此次测试的次要目标是对年夜数据量分歧部分的翻页效力的测试。本觉得应当是一个线性的了局,了局发明变更很奇异。多测试几回了局偏差在1、2秒以内,估量sqlserver关于翻页也是依据分歧地位有优化的。看了查询剖析,次要的花消仍是orderby,这仍是主键的,假如不是主键,大概是字符串,估量更慢。
由于另有其余事变要忙,也没有做进一步的测试,有乐趣的伴侣能够持续做做10万条、无索引、字符串内容的各类测试,记得告知我一下了局。
Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来; |