1.不用存储过程
直接用C#代码调用: string sql="update t_answer set answer='答案'where student_account=@student_account;
update t_answer set answer='答案'where student_account=@student_account;
update t_answer set answer='答案'where student_account=@student_account;";2.用存储过程实现
和1类似就不写了。问题1:上述两种方法,存储过程会快一点吗?qiu原因
直接用C#代码调用: string sql="update t_answer set answer='答案'where student_account=@student_account;
update t_answer set answer='答案'where student_account=@student_account;
update t_answer set answer='答案'where student_account=@student_account;";2.用存储过程实现
和1类似就不写了。问题1:上述两种方法,存储过程会快一点吗?qiu原因
程序需要返回大量查询结果的时候
当发现速度慢的时候
存储过程随时用不同的方式去尝试,去优化 直到组合出你满意的T-SQL语句
这要看具体情况.数据库服务器的能力是有限的,最好不要将所有事情都交给数据库去做.
但对于B/S结构和C/S结构来说,C/S结构可以将一些数据的处理分散到各个不同的客户端,这样,如果将这些处理交给客户端去做可以减轻服务器的压力,而对于B/S结构,特别是对于那些WEB服务器与数据库服务器装在一台机器上的网站,这些处理交给客户端(实际上就是WEB服务器)处理与交给数据库处理结果相差不是很大,如果在存储过程处理过即可以立即作查询条件或源的,那给存储处理或许更好一些.
只用寄存器的 --只进行常量的运算速度最快,从CPU内部总线走
用内存储器的 --要用到内存,数据从外部地址总线和数据总线走
用外存储器的 --要通过总线经并口或串口走,还牵涉到磁盘的机械运动
由网络传送的 --要经外部串口由双绞线走,还要经一个个路由节点
它们的运行速度是以几何倍数的关系增加的,我们在写程序的时候,应该考虑这些问题.比如上午回答一个旬的第一天的问题,开始是这么说的:
create function getquarterfirst
(@dt datetime)
returns datetime
as
begin
declare @dt1 datetime
set @dt1= ltrim(year(@dt))+'-'+ltrim((month(@dt)-1)/3*3+1)+'-01'
return @dt1
end
后来想了想,还是应该改成:
create function getquarterfirst
(@dt datetime)
returns datetime
as
begin
return ltrim(year(@dt))+'-'+ltrim((month(@dt)-1)/3*3+1)+'-01'
end
虽然只少了个定义变量和赋值,但运行速度上后者比前者要快非常多,因为前者走外部总线,后者走内部总线!曾经的老师教导我们:
所有指令中,赋值语句的指令运行速度是最慢的!