当前位置:首页 » 存储配置 » mysql为什么需要存储过程

mysql为什么需要存储过程

发布时间: 2022-04-05 06:15:56

① mysql中的存储过程是什么意思啊

直白的讲就是把SQL语句进行封装,然后留个接口,使用的时候直接调用接口。

② 为什么要使用 mysql 存储过程

速度快,存储过程是一种特殊的sql语句!

③ mysql 为什么不用存储过程

我不是这样理解的
1对于某些返回行纪录很多的情况,存储过程发挥很大作用,第1次编译之后,之后不用再编译,直接走执行计划
理论上要快很多的
2特别某些大表,复杂应用有时候必须用存储过程

我回忆很多年前作项目,有专家指导团队要求所有SQL代码全部转为存储过程----一方面安全性,另1方面速度理论要快

现在我当前环境确实是并发量大的应用,我觉得对于单条插入 删除 修改等操作可以不用
但是类似 SQL我觉得还是应该用存储过程 (现在我不知道mysql的内部机智)

④ mysql中存储过程是什么意思

存储过程(stored
procere)是一组为了完成特定功能的sql语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
一个存储过程是一个可编程的函数,它在数据库中创建并保存。

⑤ mysql 存储过程 是什么意思

用select...into语句

下面是mysql 5.0的帮助文档的:
这个SELECT语法把选定的列直接存储到变量。因此,只有单一的行可以被取回。

SELECT id,data INTO x,y FROM test.t1 LIMIT 1;
注意,用户变量名在MySQL 5.1中是对大小写不敏感的。请参阅9.3节,“用户变量”。

重要: SQL变量名不能和列名一样。如果SELECT ... INTO这样的SQL语句包含一个对列的参考,并包含一个与列相同名字的局部变量,MySQL当前把参考解释为一个变量的名字。例如,在下面的语句中,xname 被解释为到xname variable 的参考而不是到xname column的:

CREATE PROCEDURE sp1 (x VARCHAR(5))
BEGIN
DECLARE xname VARCHAR(5) DEFAULT 'bob';
DECLARE newname VARCHAR(5);
DECLARE xid INT;

SELECT xname,id INTO newname,xid
FROM table1 WHERE xname = xname;
SELECT newname;
END;
当这个程序被调用的时候,无论table.xname列的值是什么,变量newname将返回值‘bob’。

⑥ 为什么MySQL的存储过程的书写这么麻烦DELIMITER 这种字符有什么作用

其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。
默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,
那么回车后,mysql将会执行该命令。如输入下面的语句
mysql> select * from test_table;
然后回车,那么MySQL将立即执行该语句。

但有时候,不希望MySQL这么做。在为可能输入较多的语句,且语句中包含有分号。
如试图在命令行客户端中输入如下语句
mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)
mysql> RETURNS varchar(255)
mysql> BEGIN
mysql> IF ISNULL(S) THEN
mysql> RETURN '';
mysql> ELSEIF N<15 THEN
mysql> RETURN LEFT(S, N);
mysql> ELSE
mysql> IF CHAR_LENGTH(S) <=N THEN
mysql> RETURN S;
mysql> ELSE
mysql> RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));
mysql> END IF;
mysql> END IF;
mysql> END;
默认情况下,不可能等到用户把这些语句全部输入完之后,再执行整段语句。
因为mysql一遇到分号,它就要自动执行。
即,在语句RETURN '';时,mysql解释器就要执行了。
这种情况下,就需要事先把delimiter换成其它符号,如//或$$。
mysql> delimiter //
mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)
mysql> RETURNS varchar(255)
mysql> BEGIN
mysql> IF ISNULL(S) THEN
mysql> RETURN '';
mysql> ELSEIF N<15 THEN
mysql> RETURN LEFT(S, N);
mysql> ELSE
mysql> IF CHAR_LENGTH(S) <=N THEN
mysql> RETURN S;
mysql> ELSE
mysql> RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));
mysql> END IF;
mysql> END IF;
mysql> END;//
这样只有当//出现之后,mysql解释器才会执行这段语句

⑦ mysql存储过程为什么不推荐使用

维护不方便,对数据库压力不较大,不易于数据库集群的扩展和迁移。
能够在业务系统层面做的逻辑尽量不要用存储过程来做。
以后做数据库的迁移的时候,换了数据库,存储过程可能要重写或重构。但是如果放在业务代码层去实现对应的逻辑,数据库换了之后,更改对应的连接驱动,业务代码不用做任何吸怪。

⑧ mysql 存储过程有用吗

当然有用,原因:
1、存储过程在被创建以后可以在程序中被多次调用,而不必重新编写该存储过程,并且这个存储过程可以修改,但对应用程序源代码毫无影响。
2、存储过程能够实现较快的执行速度。
3、存储过程能够减少网络流量。
4、存储过程可被作为一种安全机制来充分利用。

⑨ mysql 什么情况下使用存储过程

mysql 执行语句是要先编译,然后再执行的。这样如果查询并发大的时候。会浪费很多资源和时间。造成mysql进程占用资源过多,症状就是慢。

但存储过程可以把一些特别的语句封装成一个方法 ,再编译好成一个可以执行的方法,对外只要接收参数就可以了。这样就不用再编译。执行就快了

什么时候会用到?你觉得你数据库因为同时出现太多读写操作而变得慢 ,那么就要用了

主要用来提升性能。。

热点内容
哪些情况要重新编译 发布:2024-11-20 19:26:02 浏览:864
微信腾讯数据库 发布:2024-11-20 19:24:55 浏览:808
弹簧预压缩 发布:2024-11-20 19:24:06 浏览:934
phpip2long 发布:2024-11-20 19:16:47 浏览:948
编程猫登录代 发布:2024-11-20 19:04:29 浏览:351
我的世界服务器刷怪指令 发布:2024-11-20 19:00:22 浏览:829
装修配置专员是什么的 发布:2024-11-20 18:55:02 浏览:620
怎么破解苹果手机6密码怎么办 发布:2024-11-20 18:52:25 浏览:405
解密数字编程 发布:2024-11-20 18:50:55 浏览:714
python字典生成 发布:2024-11-20 18:46:41 浏览:22