仓酷云

标题: ASP网站制作之SQL Server 存储历程的分页 [打印本页]

作者: 灵魂腐蚀    时间: 2015-1-16 23:38
标题: ASP网站制作之SQL Server 存储历程的分页
大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧server|存储历程|分页SQLServer存储历程的分页,这个成绩已会商过几年了,良多伴侣在问我,以是在此宣布一下我的概念
创建表:

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



拔出数据:(2万条,用更多的数据测试会分明一些)
SETIDENTITY_INSERTTestTableON

declare@iint
set@i=1
while@i<=20000
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分页)
语句情势:
SELECTTOP10*
FROMTestTable
WHERE(IDNOTIN
(SELECTTOP20id
FROMTestTable
ORDERBYid))
ORDERBYID


SELECTTOP页巨细*
FROMTestTable
WHERE(IDNOTIN
(SELECTTOP页巨细*页数id
FROM表
ORDERBYid))
ORDERBYID

-------------------------------------

分页计划二:(使用ID年夜于几和SELECTTOP分页)
语句情势:
SELECTTOP10*
FROMTestTable
WHERE(ID>
(SELECTMAX(id)
FROM(SELECTTOP20id
FROMTestTable
ORDERBYid)AST))
ORDERBYID


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

别的的计划:假如没有主键,能够用一时表,也能够用计划三做,可是效力会低。
倡议优化的时分,加上主键和索引,查询效力会进步。

经由过程SQL查询剖析器,显现对照:我的结论是:
分页计划二:(使用ID年夜于几和SELECTTOP分页)效力最高,必要拼接SQL语句
分页计划一:(使用NotIn和SELECTTOP分页)效力次之,必要拼接SQL语句
分页计划三:(使用SQL的游标存储历程分页)效力最差,可是最为通用

在实践情形中,要详细剖析。


更多的会商见:
http://community.csdn.net/Expert/topic/3292/3292678.xml?temp=.1621515


</p>在实现ERP等高端的ASP应用时,用户需要提供核心的经营资料,需要ASP商有很高的信用度。楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。
作者: 分手快乐    时间: 2015-1-20 10:47
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
作者: 活着的死人    时间: 2015-1-29 06:48
我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
作者: 精灵巫婆    时间: 2015-1-30 11:15
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
作者: 愤怒的大鸟    时间: 2015-2-6 10:39
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
作者: 蒙在股里    时间: 2015-2-15 23:39
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
作者: 简单生活    时间: 2015-3-4 18:40
你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
作者: 若天明    时间: 2015-3-11 20:41
我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
作者: 不帅    时间: 2015-3-19 12:21
Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)
作者: 透明    时间: 2015-3-27 23:10
不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍




欢迎光临 仓酷云 (http://www.ckuyun.com/) Powered by Discuz! X3.2