database - 存储过程是如何工作的

标签 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 如何执行,而我们使用动态工作,

例如,

如果传递userid 10那么sp也读取记录10,

如果我通过 14 那么,SP 再次查看 14 条记录,看到同样的工作 NORMAL SQL QUERY

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

问候

最佳答案

存储过程,顾名思义,存储在数据库服务器上。它们会在您创建它们时传输到服务器并进行编译,并在您调用它们时执行。

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

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

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

关于database - 存储过程是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4172622/

相关文章:

mysql - 如何在 MySQL 函数中引发错误

sql - 按 DISTINCT 列限制/偏移

sql-server - 损坏的 Azure SQL 存储过程只能通过删除重新创建来修复

Java/PostgreSQL - 性能数据优化

mysql - 如何在livecode中从手机上传图像并存储在mysql数据库中

php - 使用 PHP 和 codeigniter 显示带有 foreach 函数的固定表

python - 适用于 Netezza 和 MySQL 的 jaydebeapi

php - Laravel Eloquent ORM 中的 Multi-Tenancy 关系

javascript - 显示 SQLite 表中的总行数

android,无需遍历所有位置即可找到最近的位置