大家讨论一下:数据库操作是在客户端提交SQL语句好还是
在服务器端写存储过程,在客户端传递参数好呢?
一定要说明自己的理由,
收到好的答案立即结帐,没有好的答案3天内结帐

解决方案 »

  1.   

    楼上的做法和我一样,可我发现有不少公司后来都改成
    客户端提交查询语句了,我百思不得其解
    郁闷ing
      

  2.   

    从速度上讲,存储过程是事先在服务器上编译好的,速度比较快;而执行SQL语句需要先将SQL语句传到服务器上,编译之后再执行,速度没有存储过程快。不过简单的查询就没有必要用SQL语句了,可以根据项目情况,事先设计、规划好存储过程。
      

  3.   

    他们都说 存储过程 速度快.. 比传SQL语句快N倍
      

  4.   

    q 我认为初学者就在开发环境使用SQL语句好,而入门以后,就应该用存储过程,因为存储过程毕竟是一种类似的专门语言,许多问题不能用SQL语句简单的解决,而用存储过程就容易多了。
      另外,使用存储过程,开发环境的接口调用语句也比较一致,你只须准备参数就行了,无需写那么复杂的长SQL语句。大家知道,在SQL语句中有保留字,有常量,有变量,要写出一个语句,还真不简单呢!
      

  5.   

    我觉得简单的操作还是直接用SQL效率高一点吧,存储过程也需要编译吧。
      

  6.   

    能用存储过程的尽可能用存储过程,能用触发器的地方尽可能用触发器!VB人员只注重VB本身逻辑设计,数据库交给专业的数据库人员去做·这样不仅管理方便,修改和维护也很方便,网络负担也轻!但都是以简单、方便为前提的!  ^_^正如数据库中的“模式设计”与“逆模式设计”的思想一样,需取得一个平衡!!!
      

  7.   

    绝对是用存储过程,好处楼上都说了很多,其实还有一个更大的好处,就是参数传递,如果在前台写代码的话,那就变成了动态sql字符串语句,无法真正实现参数传递,且有潜在的注入漏洞隐患,而且存储过程可以返回参数值,这个恐怕在前台无法实现.至于很多软件公司不使用存储过程,我想那应该是保护代码的原因吧.
      

  8.   

    存储过程维护也比较方便。前台只需要处理发送及接收数据,数据处理在存储过程中处理,如果在客户服务过程中出问题,不需要配备什么环境就可以进行修改。存储过程也有弱点,就是加重了服务器的负担,视情况而定吧,简单的,一两个表连接还是用SQL语句,复杂一点还是用存储过程吧。
      

  9.   

    我觉得服务器的工作仅仅是提供数据接口就好,
    比如查询等的工作全放在客户端,服务器送数据过来,客户端挑选。
    反正能减轻服务器的工作量是最大的前提
    我一般很少用sql语句来指挥服务器工作===============================
    -= www.PoP4u.NET =-
      

  10.   

    这就看情况写,存储过程是由服务器运行
    如果客户端很多,用存储过程会使服务器变慢,如果客户端不多,用存储过程比SQL快.
      

  11.   

    “如果客户端很多,用存储过程会使服务器变慢”
    这种说法不正确,看来不少朋友的基本概念还不扎实
    我现说明一下:无论查询在哪儿提交,最终都是由
    服务器执行的,而且客户端提交的SQL语句还要有服务器
    分析编译后才能执行,应该说这种提交方式
    客户端越多,服务器负担越大;请看看存储过程的缔造者(当然是最有说服力的):微软下的定义:
    存储过程
    Transact-SQL 语句的预编译集合,这些语句在一个名称下存储并作为一个单元进行处理。SQL Server 提供存储过程以管理 SQL Server 和显示有关数据库和用户的信息。SQL Server 提供的存储过程称为系统存储过程。使用 SQL Server 中的存储过程而不使用存储在客户计算机本地的 Transact-SQL 程序的优势有: 
    1。允许模块化程序设计。 
    只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。2。允许更快执行。 
    如果某操作需要大量 Transact-SQL 代码或需重复执行,存储过程将比 Transact-SQL 批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。每次运行 Transact-SQL 语句时,都要从客户端重复发送,并且在 SQL Server 每次执行这些语句时,都要对其进行编译和优化。3。减少网络流量。 
    一个需要数百行 Transact-SQL 代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。4。可作为安全机制使用。 
    即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。我让大家讨论的主要初衷是:
    我发现有不少公司后来都改成
    客户端提交查询语句了,我百思不得其解看来有不少朋友连基本概念都没弄清不过可喜的是:有几位朋友尤其是frankwong(黄梓钿) 回答还比较对路再顶!希望高手回答!!!!
    这个问题其实200分
    感兴趣的到数据库SQLserver栏目回答
    两边都给分的哟!!!!!
      

  12.   

    看项目了的发展了,如果你的项目是针对很多不同公司客户的,要考虑的项目的移直性,最好少用存储过程,想想你做了半天的VB+SQL结果客户那里只有ORACLE 或SYBASE的LICENCE 你那些STORE PROCEDURE都要进行改动
    而有的客户就是想用ACCESS便于安装,那你怎么办?总的来说还是因项目而定不过有个折中的办法就是在客户端将参数组织成XML形式传到服务器端然后服务器端再利用STORE PROCEDURE 做XML处理,这样做在后期对项目的的改动应该是比较灵活的,估计现在大部分的数据库都该支持XML吧
      

  13.   

    肯定是前者嘛,还用说。存储过程第一容易维护,不用重新编译程序,第二,存储过程可以避开ADO与SQL中间的转换计算。第三可以便于程序开发的分工。。很多,讲不完。
      

  14.   

    你的程序能够同时支持各种类型数据库么?比如Oracle、SqlServer、Db2。
    为移植性考虑,应尽量避免使用存储过程,这也正是好多大公司不再采用存储过程的原因。
    鄙人建议你使用三层结构:客户端/应用服务器/数据库服务器。
      

  15.   

    一般来说用存储过程比较好些,但在C/S服务器负荷过重的情况下,用SQL语句也不错.