MySQL存储过程

对于更复杂的应用,简简单单的CURD实现不了的,又或者说实现起来性能没有那么多好,便捷性没有那么高。举个例子,假如我们想学习索引对于千万级数据优化效果,又或者我想输入一个学生的学号,就能获取学生在该学校所有的成绩分析图谱。又或者我想输入一个用户id,获取用户在平台中的活动数据,统计数据,每个月份的收益计划等。如果仅仅靠CURD实现的话,性能先别说,可能要在业务代码写很多for循环。遇到这种场景,使用存储过程。
举个例子,生成1000万条测试数据,代码如下

<?php
require_once 'Db.php';
$db = Db::init([],true);
$sql  = 'DROP PROCEDURE IF EXISTS test';//如果存在名为test的存储过程,则删除
$db->query($sql);
$sql = "
        CREATE PROCEDURE test(IN total INT(11))//创建名为test的存储过程,输入参数为整数,接受长度最长为11位
        BEGIN //开始符
            DECLARE number INT DEFAULT 0; //设置变量number,默认值为0
            WHILE number < total DO //开始while循环 当number小于传入来的total时,循环体继续续
                    INSERT INTO study VALUES(NULL,MD5(FLOOR(RAND() * 10000)),FLOOR(RAND() * 2));//循环体执行的sql语句
                    SET number =  number + 1;//每次循环时 number +1 
             END WHILE;//结束while循环
        END //结束符
    ";
$data = $db->query($sql);
$sql = "CALL TEST(100)"; //执行存储引擎
$result = $db->query($sql);
var_dump($result);

执行前


image.png

执行后


image.png

以后每次想要创建多少条测试数据 只需要 call test(数目) 即可 这样子就可以减少大量的业务代码,而且性能更好.可以把需要的储存过程代码记录到数据库中,对应相应的业务.拿出执行即可.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载自这里 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Sto...
    杜七阅读 6,972评论 4 27
  • 一、存储过程 MySQL存储过程存储过程和存储函数参考文章 SQL语句需要先编译然后执行,而存储过程(Stored...
    王王王王王景阅读 3,180评论 0 0
  • SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,...
    MIN_ZJM阅读 3,841评论 0 1
  • 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Pr...
    小流歌_阅读 10,754评论 0 1
  • 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Pr...
    麦兜叮叮当阅读 6,428评论 0 1