MYSQL网页设计sql server平台用存储历程举行分页的两...
”由于MySQL已经是一个运行了众多知名Web2.0网站的数据,包括Craigslist、Digg、Wikipedia和Google等,或许我们可以说每一个Web2.0公司实质上是一个使用MySQL数据库的公司。server|存储历程|分页killergo的专栏比来由于略微有点余暇工夫,以是想了下在sqlserver平台用存储历程的分页体例,如今列示鄙人面。
实践测试时,在15000条数据情形下二者功能大致相称,在20000-30000条数据的情形下前者分明比后者功能更佳。更年夜数据量没有举行测试了。
注重,数据内外面是不是有键和索引对功能的影响相称年夜
-----------------------------------------------------
第一种:
/*第一个参数是每页条数,第二个参数是方针页码*/
CREATEprocsp_fixpage@pagesizeint,@destpageintas
setnocounton
declare@idint
declare@startidint
select@startid=(@destpage-1)*@pagesize
setrowcount@startid
select@id=idfromt_member
setrowcount@pagesize
setnocountoff
select*fromt_memberwhereid>@idorderbyid
GO
第二种:
CREATEPROCEDUREsp_fixpage1@pagesizeint,@destpageint
as
setnocounton
CREATETABLE#myTable(
NOTNULL,
(50)COLLATEChinese_PRC_CI_ASNOTNULL,
(50)COLLATEChinese_PRC_CI_ASNULL,
NULL,
(50)COLLATEChinese_PRC_CI_ASNULL,
(2)COLLATEChinese_PRC_CI_ASNULL,
(50)COLLATEChinese_PRC_CI_ASNULL,
NULL,
NULL,
NULL,
(50)COLLATEChinese_PRC_CI_ASNULL,
NULL,
(64)NULL,
(50)COLLATEChinese_PRC_CI_ASNULL,
(150)COLLATEChinese_PRC_CI_ASNULL,
(50)COLLATEChinese_PRC_CI_ASNULL,
NULL,
(50)COLLATEChinese_PRC_CI_ASNULL,
(50)COLLATEChinese_PRC_CI_ASNULL,
NULL
)ON
declare@tempPosint
declare@absPosint
declare@nowIDint
set@tempPos=1
set@absPos=1
if@destpage>1
set@absPos=(@pagesize*(@destpage-1)+1)
declaremyCursorscrollcursorfor
selectfromt_memberorderbyid
openmyCursor
fetchabsolute@absPosfrommyCursorinto@nowID
while(@@fetch_status=0)and(@tempPos<=@pagesize)
begin
set@tempPos=@tempPos+1
insertinto#myTableselect*fromt_memberwhere=@nowID
fetchnextfrommyCursorinto@nowID
end
closemyCursor
deallocatemyCursor
setnocountoff
select*from#myTable
droptable#myTable
GO
有的时候,一些缺失的功能可以通过别的办法来实现,例如,在MySQL4.1以前,你可以通过使用join方法来替代子查询的功能。在MySQL5.0中,大多数关系型数据库所要求的功能已经都具备。 现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层. 记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。 这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片? 个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。 备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。 现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层. 一个是把SQL语句写到客户端,可以使用DataSet进行加工; SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。
页:
[1]