存储过程插入1000条数据, 执行25.9840 秒, 感觉太慢!!!求指点....

lyzhlpqf 2015-09-18 02:27:25

BEGIN

DECLARE i INT DEFAULT 0;

WHILE i<1000
DO
INSERT INTO author(name, email) VALUES('name', CONCAT('email@',i));
SET i=i+1;
END WHILE ;

END


MySQL 返回的查询结果为空 (即零行)。 (查询花费 25.9840 秒。)

求解释为什么这么慢....是在phpMyAdmin中执行的此存储过程...


表结构为:

CREATE TABLE IF NOT EXISTS `author` (
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=11512 DEFAULT CHARSET=utf8;
...全文
417 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaobluesky 2015-09-28
  • 打赏
  • 举报
回复
自动commit每次都会写redo,真正耗时的不是插入,而且每次写redo。。。 innodb_log_file_size 一般在1g
xiaobluesky 2015-09-28
  • 打赏
  • 举报
回复
对于插入数据影响最大的是插入缓存。。 正常缓存 1000条的插入应该在1s内, 试试开头加 SET AUTOCOMMIT=0,结束加commit看看
九月茅 2015-09-21
  • 打赏
  • 举报
回复
你的innodb_flush_log_at_commit值是多少? sync_binlog值是多少? 可以将innodb_flush_log_at_commit设置成为0,将sync_binlog设置成0,你再试试看效果怎么样?
LongRui888 2015-09-21
  • 打赏
  • 举报
回复
你加上了 这个 WHERE id >= 0 肯定是不会有结果的,因为你的表示空的一条记录也没有,所以加上 WHERE id >= 0 也还是0条记录,怎么insert都是空的。 我刚才试了一下,只要0.26秒,你看看 autocommit是否为off,如果是,那就改成on:
mysql> use world;
Database changed
mysql> CREATE TABLE IF NOT EXISTS `author` (  `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,  `name` varchar(255) DEFAULT NULL,  `email` varchar(255) DEFAULT NULL) ENGINE=InnoDB AUTO_INCREMENT=11512 DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.99 sec)


mysql> delimiter $$
mysql> CREATE  PROCEDURE `author_copy_self`(IN `nThousnd` INT)
    ->     NO SQL
    -> BEGIN
    ->
    -> DECLARE i INT DEFAULT 0;
    -> SET i = 0;
    -> WHILE i < nThousnd
    -> DO
    ->   INSERT INTO
    ->   author(name,email)
    ->     SELECT name,email
    ->     FROM author
    ->     WHERE id >= 0 LIMIT 1000;
    -> SET i = i + 1;
    -> END WHILE ;
    ->
    -> END$$
Query OK, 0 rows affected (0.12 sec)

mysql> show variables like 'autocommit%'$$
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
1 row in set (0.09 sec)

mysql> call author_copy_self(1000)$$
Query OK, 0 rows affected, 2 warnings (0.26 sec)

mysql> delimiter ;

mysql> select * from author;
Empty set (0.01 sec)
rick-he 2015-09-18
  • 打赏
  • 举报
回复
引用 2 楼 lyzhlpqf 的回复:
[quote=引用 1 楼 u011575570 的回复:] 你的表里有数据吗?有的话有多少?
没有数据, 表已经清空了.[/quote] 你的数据库配置怎样?innodb的buffer池市多少?
lyzhlpqf 2015-09-18
  • 打赏
  • 举报
回复

CREATE  PROCEDURE `author_copy_self`(IN `nThousnd` INT)
    NO SQL
BEGIN

DECLARE i INT DEFAULT 0;
SET i = 0;
WHILE i < nThousnd
DO
  INSERT INTO 
  author(name,email) 
    SELECT name,email 
    FROM author 
    WHERE id >= 0 LIMIT 1000;
SET i = i + 1;
END WHILE ;

END
lyzhlpqf 2015-09-18
  • 打赏
  • 举报
回复
引用 1 楼 u011575570 的回复:
你的表里有数据吗?有的话有多少?
没有数据, 表已经清空了.
rick-he 2015-09-18
  • 打赏
  • 举报
回复
你的表里有数据吗?有的话有多少?
Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1 安装AndroidSDK与ADTplug-in 2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 3.2 更改手机窗口画面底色——drawable定义颜色常数的方法 3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——CharSequence数据类型与ResourceID应用 3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——Style样式的定义 3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与TextView的交互 3.14 控制不同的文字字体——Typeface对象使用 3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮覆盖——动态产生按钮并最大化 3.20 今晚到哪儿打牙祭?——具选择功能的对话框 3.21 Android变脸——主题(Theme)实现 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意款——CheckBox的isChecked属性 4.5 消费券采购列表——多选项CheckBox的应用 4.6 向左或向右——RadioGroup组与onCheckedChanged事件 4.7 专业相框设计——ImageView的堆栈应用 4.8 自定义下拉菜单模式——Spinner与setDropDownViewResource 4.9 动态添加/删除的Spinner菜单——ArrayList与Widget的依赖性 4.10 心爱小宝贝相片集——Gallery与衍生BaseAdapter容器 4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton选择特效 4.13 具自动提示功能的菜单——AutoCompleteTextView与数组 4.14 数字及模拟小时钟设计——AnalogClock与DigitalClock的原理 4.15 动态输入日期与时间——DatePicker与TimePicker应用 4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示——ProgressBar与Handler的整合应用 4.18 动态文字排版——GridView与ArrayAdapter设计 4.19 在Activity里显示列表列表——ListView的布局 4.20 以动态列表配置选项——ListActivity与Menu整合技巧 4.21 查找程序根目录下所有文件——JavaI/O与ListActivity的结合.. 4.22 加载手机磁盘里的图文件——使用decodeFile方法 4.23 动态放大缩小ImageView里的图片——运用Matrix对象来缩放图文件 4.24 动态旋转图片——Bitmap与Matrix旋转ImageView 4.25 猜猜我在想什么——RadioButtonID 4.26 离开与关闭程序的弹出窗口——对话窗口上的ICON图标 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的TextView——Linkify规则 5.2 ACTION!CALL!拨打电话——Intent

57,064

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧