欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

到底要不要使用存储过程?

程序员文章站 2022-03-04 14:09:51
...

1. 前言

mysql 执行语句是要先编译,然后再执行的。这样如果查询并发大的时候。会浪费很多资源和时间。造成mysql进程占用资源过多,症状就是慢。但存储过程可以把一些特别的语句封装成一个方法 ,再编译好成一个可以执行的方法,对外只要接收参数就可以了。这样就不用再编译。执行就快了。什么时候会用到?你觉得你数据库因为同时出现太多读写操作而变得慢 ,那么就要用了,主要用来提升性能。


其他看法:
1.在传统企业,比如银行什么的,有严格的开发规范指定所有的业务逻辑处理必须放在存储过程里。开发人员不需要知道表结构,不需要知道字段类型,只用调用就好,保证数据库的安全性。所以必须保证写出的存储过程性能是极高的,但是即使性能很好,在数据库端进行大量的计算,还是会影响数据库的性能。
2.也看到阿里等等的大牛说不要使用存储过程,在大流量冲击下,数据库的负载压力会特别大,降低吞吐量。而且不易迁移和维护。
3.在互联网企业里,应该都很少使用存储过程吧,至少我没有碰到,业务逻辑需要在数据库端处理的。


2. 什么是存储过程

SQL语句需要先编译然后执行,而存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。


3. 使用存储过程的好处

1、很多相似性的删除,更新,新增等操作就变得轻松了,并且以后也便于管理!
2、存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。
3、存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。
4、存储过程运行比较稳定,不会有太多的错误。
5、存储过程主要是在服务器上运行,减少对客户机的压力。
6、存储过程可以从自己的存储过程内引用其它存储过程,简化复杂语句。


4.怎么使用呢

1.创建
2.删除
3.调用

1.创建存储过程
1.基本语法:
create procedure sp_name()
begin
.........
end
2.参数传递
2.删除
drop procedure sp_name;
3.调用
1.基本语法:call sp_name()
注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递

5.Mysql存储过程之简单使用

首先创建一张students学生表,增加字段与插入数据如下

CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
  `name` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
  `city` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

到底要不要使用存储过程?

5.1创建不带参数的存储过程(查看学生个数)
DELIMITER ;;
CREATE PROCEDURE `select_students_count`()
BEGIN
    SELECT count(id) from students;
END;;
DELIMITER ;

执行存储过程
call select_students_count();

到底要不要使用存储过程?

5.2 带参数的存储过程(根据城市查询总数)
DELIMITER ;;
CREATE PROCEDURE `select_students_by_city_count`(
   in _city varchar(225)
)
BEGIN
    SELECT count(id) from students where city = _city;
END;;
DELIMITER ;

执行存储过程
call select_students_by_city_count('杭州');

到底要不要使用存储过程?