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原因

解决方案 »

  1.   

    很常见的情况就是
    程序需要返回大量查询结果的时候
    当发现速度慢的时候
    存储过程随时用不同的方式去尝试,去优化 直到组合出你满意的T-SQL语句
      

  2.   

    如果在执行数据库操作之前需要对sql进行处理,这涉及到一下 replace和substring函数!这样的话 这个sql是在C#中处理还是在存储过程中处理好一点呢?
      

  3.   


    这要看具体情况.数据库服务器的能力是有限的,最好不要将所有事情都交给数据库去做.
    但对于B/S结构和C/S结构来说,C/S结构可以将一些数据的处理分散到各个不同的客户端,这样,如果将这些处理交给客户端去做可以减轻服务器的压力,而对于B/S结构,特别是对于那些WEB服务器与数据库服务器装在一台机器上的网站,这些处理交给客户端(实际上就是WEB服务器)处理与交给数据库处理结果相差不是很大,如果在存储过程处理过即可以立即作查询条件或源的,那给存储处理或许更好一些.
      

  4.   

    程序执行的快慢和占用内存的大小,对于年轻的程序员其实并不会考虑多少,因为CPU足够强劲,内存空间足够大,但是有时,细微的差别可能会产生很大的不同.比如:
    只用寄存器的   --只进行常量的运算速度最快,从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
    虽然只少了个定义变量和赋值,但运行速度上后者比前者要快非常多,因为前者走外部总线,后者走内部总线!曾经的老师教导我们:
    所有指令中,赋值语句的指令运行速度是最慢的!