PQ论坛's Archiver

pqshow 发表于 2009-5-22 13:53

为什么动易的sql版里没有任何存储过程?这样的sql高效率如何能体现呢?

[b]问题:[/b]为什么动易的sql版里没有任何存储过程?这样的sql高效率如何能体现呢?
[b]解答:[/b]动易的前台使用生成HTML静态页面功能,不需要存储过程。动易系统后台的治理页面要根据几十个条件组合成查询语句,存储过程根本不可如此灵活。太简单的查询如:select * from PE_Class order by RootID,OrderID也没有必要使用存储过程。
[b]问题:[/b]但经常看到这样的说明 没有存储过程的sql程序效率可能还比不上ac?
[b]解答:[/b]以下是以下是SQL2000的联机帮助内容:
[table][tr][td]使用 SQL Server 中的存储过程而不使用存储在客户计算机本地的 Transact-SQL 程序的优势有:
[b]答应模块化程序设计。[/b]
只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。
[b][color=#dd0000]答应更快执行。[/color][/b]
假如某操作需要大量 Transact-SQL 代码或需重复执行,存储过程将比 Transact-SQL 批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。每次运行 Transact-SQL 语句时,都要从客户端重复发送,并且在 SQL Server 每次执行这些语句时,都要对其进行编译和优化。
[b][color=#dd0000]减少网络流量。[/color][/b]
一个需要数百行 Transact-SQL 代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。
[b]可作为安全机制使用。[/b]
即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。 [/td][/tr][/table]
  所以存储过程只是体现在“快”这方面,**与普通的SQL语句是一样的。动易系统启用了生成静态页面功能,再快的存储也比不过已生成的静态页面。
  对于一些些C/S结构的软件,在客户端进行数据库的查询,这才会比存储过程引发更多的网络流量。对于服务器端程序来说,存储过程与普通查询都是在服务器的内存中进行的,所以都是一样的网络流量。

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.