如何真正存储程序工作

时间:2010-11-13 13:00:37

标签: database stored-procedures mysql

我使用了很多时间,我知道sql查询和sp之间的差异,

SQL query will be compiled everytime it is executed.
Stored procedures are compiled only once when they are 
executed for the first time.

这是一般数据库问题

但是一个很大的疑问是,

例如,

一个动态工作,即我将用户ID传递给SP,sp将返回用户名,密码,完整详细信息,

所以对于这种情况,查询应该再次执行知道,那么SP的必要性是什么,而不是SQL QUERY,

请清除这个疑问,

非常感谢您的所有更新,

但我不想要优势,比较,

只是说,

当我们使用动态作品时,sp如何执行

例如,

如果通过用户标识10,则sp也读取记录10,

如果我通过14然后,SP再次查看14条记录,请参阅同样的工作NORMAL SQL QUERY

做,但是在那个时候执行和获取,那么我为什么要去sp,

问候

2 个答案:

答案 0 :(得分:3)

存储过程(如名称所示)存储在数据库服务器上。它们被传输到服务器并在您创建它们时进行编译,并在您调用它们时执行。

另一方面,简单的SQL查询会在每次使用时传输到服务器并进行编译。

因此,传输一个巨大的查询(而不是简单的“执行过程”命令)和编译会产生开销,这可以通过使用存储过程来避免。

MySQL与其他RDBMS一样,具有查询缓存。但这只是避免编译,并且只有当查询与先前执行的查询完全相同时,这意味着如果执行相同查询的2次,则不使用缓存,例如,在where子句中使用不同的值。

答案 1 :(得分:1)

我认为存储过程没有理由只查询所有用户详细信息。

存储过程是您在数据库服务器上执行的功能代码。我可以想到你使用它们的三个原因:

  1. 为用户创建一个隐藏客户端架构详细信息的界面。
  2. 性能。可以在数据库服务器上更有效地对大型数据集进行大量计算
  3. 有时,在像SQL这样的声明式,基于集合的语言中表达您认为需要的内容可能很困难(或根本不可能)。那是有些人举起手来写存储过程的。
  4. 只有1.你的问题是合理的。我建议坚持使用SQL。

    更新:在我看来,您提供的新信息仍然无法证明存储过程的合理性。返回14条记录的查询是常规的。