存储过程是在生成时就进行编译的,一般比直接执行SQL语句快。

解决方案 »

  1.   

    视图也是数据库对象,它的速度也比直接执行SQL 语句快吗?
      

  2.   

    存储过程的优点
    1 存储过程允许标准组件式编程
    存储过程在被创建以后可以在程序中被多次调用而不必重新编写该存储过程的SQL
    语句而且数据库专业人员可随时对存储过程进行修改但对应用程序源代码毫无影响因
    为应用程序源代码只包含存储过程的调用语句从而极大地提高了程序的可移植性
    2 存储过程能够实现较快的执行速度
    如果某一操作包含大量的Transaction-SQL 代码或分别被多次执行那么存储过程要
    比批处理的执行速度快很多因为存储过程是预编译的在首次运行一个存储过程时查询优化器对其进行分析优化并给出最终被存在系统表中的执行计划而批处理的Transaction-
    SQL 语句在每次运行时都要进行编译和优化因此速度相对要慢一些
    3 存储过程能够减少网络流量
    对于同一个针对数据数据库对象的操作如查询修改如果这一操作所涉及到的
    Transaction-SQL 语句被组织成一存储过程那么当在客户计算机上调用该存储过程时
    网络中传送的只是该调用语句否则将是多条SQL 语句从而大大增加了网络流量降
    低网络负载
    4 存储过程可被作为一种安全机制来充分利用
    系统管理员通过对执行某一存储过程的权限进行限制从而能够实现对相应的数据访
    问权限的限制避免非授权用户对数据的访问保证数据的安全
      

  3.   

    存储过程比直接在客户端执行SQL语句快。即使从客户端执行SQL语句,SQL Server也会缓存一会儿,相当于保存了一个临时的存储过程。从客户端看,执行存储过程比直接执行SQL语句快多少呢?我觉得相当于跑1万米与1.001米所用的时间的差距——非常微小。
      

  4.   

    只要SQL语句非常相似,一些数值部分不同也没关系,SQL Server仍然会重复使用对前一个相似结构的SQL语句的分析结果。
      

  5.   

    上边已经说了很多存储过程的优点了,非常同意,特别是存储过程通常作为较大型数据库的方便的“分配权限”的构造方式。存储过程有一个明显的缺点,就是:泄漏商业机密。如果你不能保证服务器被看护好,并且程序中包含有比较超前的商业规则,那么最好直接从客户端发SQL命令,比较不容易被偷窥。
      

  6.   

    那如果用扩展存储过程来实现,把SQL等所谓的商业机密写在.dll文件里这样的效果怎么样?