发布时间:2026/7/10 16:35:18
一个比脚本造数据更快的方式-存储过程 存储过程造数据主要有以下几个优势1.批量高效一次性插入大量数据比逐条执行INSERT快得多。比如造 10 万条测试数据用存储过程几秒就完成手写 SQL 几乎不可能。2.逻辑可复用一次创建多次调用CALLgenerate_test_bonds(100);-- 造 100 条CALLgenerate_test_bonds(10000);-- 造 1 万条3.数据可控可以灵活控制数据量和数据模式比如模拟真实场景少量数据测功能正确性大量数据测性能、索引优化、分页查询4.SQL 运行在服务端存储过程在 MySQL 服务器端执行网络开销小不会有大量 SQL 语句来回传输。对比方式1 万条数据耗时灵活性逐条INSERT慢多次网络往返低存储过程快服务端一次性执行高传参控制脚本语言Python/Shell中等最高存储过程详解什么是存储过程存储过程Stored Procedure是一组预编译的 SQL 语句集合存储在数据库服务器上通过一个名称调用执行。可以理解为数据库里的函数。以你的代码为例逐行解析DELIMITER// -- 1. 临时修改语句结束符为 //CREATEPROCEDUREgenerate_test_bonds(INnumINT)-- 2. 创建存储过程接收一个输入参数BEGIN-- 3. 过程体开始DECLAREiINTDEFAULT1;-- 4. 声明局部变量 i初始值 1WHILEinumDO-- 5. 循环条件i 传入的参数INSERTINTObond_info(bond_code,bond_name,price,status)VALUES(CONCAT(BOND,LPAD(i,6,0)),-- 生成 BOND000001 格式的代码CONCAT(测试债券,i),-- 生成测试债券1格式的名称ROUND(RAND()*100,2),-- 随机生成 0~100 的价格保留2位小数ACTIVE);-- 固定状态值SETii1;-- 6. 计数器 1ENDWHILE;-- 7. 循环结束END// -- 8. 过程体结束DELIMITER;-- 9. 恢复语句结束符为 ;语法说明1.DELIMITER— 为什么需要它默认情况下 MySQL 用;作为语句结束符。但存储过程内部包含多条;结尾的语句如果不改分隔符MySQL 遇到第一个;就认为结束了。DELIMITER // ← 告诉 MySQL现在用 // 当作结束符 ...存储过程内容里面可以正常用 ;... END // ← 这里才真正结束 DELIMITER ; ← 恢复默认2. 参数类型类型含义示例IN输入参数调用时传入IN num INTOUT输出参数过程内赋值调用后取出OUT total INTINOUT输入输出兼顾INOUT val INT3. 变量DECLAREiINTDEFAULT1;-- 声明 默认值SETii1;-- 赋值SELECTCOUNT(*)INTOiFROMbond_info;-- 查询结果赋给变量4. 流程控制-- 条件判断IF条件THEN...ELSEIF条件THEN...ELSE...ENDIF;-- 循环WHILE条件DO...ENDWHILE;REPEAT...UNTIL 条件ENDREPEAT;完整生命周期创建 → 调用 → 查看 → 删除 CREATE PROCEDURE xxx() ... -- 创建 CALL xxx(); -- 调用 SHOW CREATE PROCEDURE xxx; -- 查看定义 DROP PROCEDURE IF EXISTS xxx; -- 删除优缺点优点缺点预编译执行快调试困难减少网络传输移植性差不同数据库语法不同逻辑封装复用方便版本管理不方便安全性高权限控制复杂业务逻辑不适合全放数据库总之造测试数据用存储过程是最省事、最高效的方式。

相关新闻

2026/7/10 16:30:18

Raveberry社区版vs自定义版:如何扩展和定制功能

Raveberry社区版vs自定义版:如何扩展和定制功能 【免费下载链接】raveberry A multi-user music server with a focus on participation 项目地址: https://gitcode.com/gh_mirrors/ra/raveberry Raveberry是一个专注于参与式体验的多用户音乐服务器&#xf…

2026/7/10 16:30:18

Blade性能优化:10个提升图形渲染效率的关键策略

Blade性能优化:10个提升图形渲染效率的关键策略 【免费下载链接】blade Sharp and simple graphics library 项目地址: https://gitcode.com/gh_mirrors/blade3/blade Blade是一款专为Rust语言设计的现代图形渲染库,以其简洁高效的API和强大的硬件…

2026/7/10 17:30:25

如何快速入门R语言:gh_mirrors/r5/R项目中的10个实用技巧

如何快速入门R语言:gh_mirrors/r5/R项目中的10个实用技巧 【免费下载链接】R Exercises (incl. analyses) with R language (mathstatistics) 项目地址: https://gitcode.com/gh_mirrors/r5/R gh_mirrors/r5/R项目是一个专注于R语言数学和统计练习的开源项目…

2026/7/10 17:30:25

如何为 Hermit 贡献包清单:加入开源生态的完整指南

如何为 Hermit 贡献包清单:加入开源生态的完整指南 【免费下载链接】hermit 🐚 Hermit manages isolated, self-bootstrapping sets of tools in software projects. 项目地址: https://gitcode.com/gh_mirrors/her/hermit 想要为开源项目 Hermit…

2026/7/10 17:30:25

@hapi/lab 终极指南:Node.js 测试框架的完整解决方案

hapi/lab 终极指南:Node.js 测试框架的完整解决方案 【免费下载链接】lab Node test utility 项目地址: https://gitcode.com/gh_mirrors/lab2/lab 在当今快速发展的Node.js生态系统中,一个强大且易用的测试框架对于保证代码质量至关重要。hapi/l…

2026/7/10 5:21:51

国内大模型选型与企业级落地实战指南

我不能提供任何关于访问境外网络信息的技术方案或变通方法。根据中国法律法规和网络管理要求,所有互联网服务必须遵守国家关于网络安全、数据安全和内容安全的规定。ChatGPT及其后续版本(如所谓“GPT-5”)是由境外机构研发的大语言模型&#…

2026/7/10 2:34:05

三步实战方案:高效获取智慧教育平台电子课本PDF的完整流程

三步实战方案:高效获取智慧教育平台电子课本PDF的完整流程 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 项目…

2026/7/10 0:02:49

5大实战技巧:用ExifToolGUI轻松解决照片元数据管理难题

5大实战技巧:用ExifToolGUI轻松解决照片元数据管理难题 【免费下载链接】ExifToolGui A GUI for ExifTool 项目地址: https://gitcode.com/gh_mirrors/ex/ExifToolGui 你是否曾为整理旅行照片时发现拍摄时间错乱而头疼?是否需要在数百张照片中批量…

2026/7/10 6:36:15

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…