|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
源代码保护方面其实现在考虑得没那么多了..NET也可以反编译.ASP写得复杂的话别人能看得懂的话.他也有能力自己写了.这方面担心的倒不太多.纵观现在网上可以下载的那些所谓BBS还有什么网站等等的源代码存储历程|分页看了几个伴侣写的关于存储历程分页的文章,感到有点成绩。starleee和西方蜘蛛但愿我能宣布点意见,我复杂说一下。
起首是allsky的谁人分页办法基本就不建立,看看他是如许的:
select@iStart=(@iPage-1)*@iPageSize
select@iEnd=@iStart+@iPageSize+1
也就是说,他的入手下手和停止id依照每页显现数硬算出来的,想要这类办法建立必需满意如许一个前提,即这个论坛只要一个版面,而且id从1入手下手是一连的,两头不克不及有距离,也就是说假如删贴了的话那就会堕落。
其次是starleee谁人,实在思绪是对的,但既然用求首尾id的办法分页,就没有需要用游标,能够使用selecttop*或setrowcount=的语法来求出首尾id,第一种办法只能用在sqlserver里,尔后一种在sybase和oracle里都能建立。
starleee提到说实验过这类办法不如用游标快,实在成绩出在他的索引建的欠好,没有专门为这个存储历程创建索引。影响数据库效力最年夜的要素就是索引,在这里有需要讲一下。实际上假如一个排序的第一个字段的索引不克不及过滤失落年夜部分数据,那末这个索引就是不得当的,如许将大概有些流畅,据个例子来讲吧:
selectid,name,forumidfromtablexxxwhereforumid=1andnamelike%aaa%orderbyid
看看上边这条语句,假如想要高效,就必要为它创建如许一个索引:
forumid,id
如许说把,假如在一个有百万条记录的表顶用这条语句,假如不建这个索引,最年夜的多是要超时,而创建上述索引,假如有满意前提的记录的话,那能够在1秒钟内呼应(选出第一条切合前提的记录),而假如没有满意前提的记录,也能够在一分钟内呼应。
上面这个存储历程是我的bbs使用求首尾id的办法分页的,人人能够看一下
/*************************************************************************/
/**/
/*procedure:up_GetTopicList*/
/**/
/*Description:贴子列表*/
/**/
/*Parameters:@a_intForumID:版面id*/
/*@a_intPageNo:页号*/
/*@a_intPageSize:每页显现数,以根贴为准*/
/**/
/*Usetable:bbs,forum*/
/**/
/*Author:bigeagle@163.net*/
/**/
/*Date:2000/2/14*/
/**/
/*History:*/
/**/
/*************************************************************************/
ifexists(select*fromsysobjectswhereid=object_id(up_GetTopicList))
dropprocup_GetTopicList
go
createprocup_GetTopicList
@a_intForumIDint,
@a_intPageNoint,
@a_intPageSizeint
as
/*界说部分变量*/
declare@intBeginIDint
declare@intEndIDint
declare@intRootRecordCountint
declare@intPageCountint
declare@intRowCountint
/*封闭计数*/
setnocounton
/*检测是不是有这个版面*/
ifnotexists(select*fromforumwhereid=@a_intForumID)
return(-1)
/*求统共根贴数*/
select@intRootRecordCount=count(*)frombbswherefatherid=0andforumid=@a_intForumID
if(@intRootRecordCount=0)--假如没有贴子,则前往零
return0
/*判别页数是不是准确*/
if(@a_intPageNo-1)*@a_intPageSize>@intRootRecordCount
return(-1)
/*求入手下手rootID*/
set@intRowCount=(@a_intPageNo-1)*@a_intPageSize+1
/*限定条数*/
setrowcount@intRowCount
select@intBeginID=rootidfrombbswherefatherid=0andforumid=@a_intForumID
orderbyiddesc
/*停止rootID*/
set@intRowCount=@a_intPageNo*@a_intPageSize
/*限定条数*/
setrowcount@intRowCount
select@intEndID=rootidfrombbswherefatherid=0andforumid=@a_intForumID
orderbyiddesc
/*恢复体系变量*/
setrowcount0
setnocountoff
selecta.id,a.layer,a.forumid,a.subject,a.faceid,a.hits,a.time,a.UserID,a.fatherid,a.rootid,
Bytes=datalength(a.content),b.UserName,b.Email,b.HomePage,b.Signature,b.Point
frombbsasajoinBBSUserasbona.UserID=b.ID
whereForumid=@a_intForumIDanda.rootidbetween@intEndIDand@intBeginID
orderbya.rootiddesc,a.ordernumdesc
return(@@rowcount)
--select@@rowcount
go
</p>楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。 |
|