临时表、存储过程线性执行问题?
时间:2011-07-21
来源:互联网
问题概述:在存储过程中将查询的数据insert 到一张临时表中,在最终语句中对临时表进行select
简要代码:
方案一
create procedure test
begin
declare tmpsql,sqlstr text;
while 条件 do
insert into 临时表名 select a.* from 表名 a where id>oldid and id<Y ';
end while;
select * from 临时表名;
end;
这种做法可能表述不是很明确,我觉得奇怪,语句执行是由上往下的执行过程,但是这与如下方法有什么区别。
create procedure test
begin
declare tmpsql,sqlstr text;
while 条件 do
set tmpsql='select a.* from 表名 a where id>oldid and id<Y ';
end while;
set tmpsql=concat('select * from (',tmpsql,') a');
prepare sqlstr from tmpsql;
execute sqlstr;
end;
简要代码:
方案一
create procedure test
begin
declare tmpsql,sqlstr text;
while 条件 do
insert into 临时表名 select a.* from 表名 a where id>oldid and id<Y ';
end while;
select * from 临时表名;
end;
这种做法可能表述不是很明确,我觉得奇怪,语句执行是由上往下的执行过程,但是这与如下方法有什么区别。
create procedure test
begin
declare tmpsql,sqlstr text;
while 条件 do
set tmpsql='select a.* from 表名 a where id>oldid and id<Y ';
end while;
set tmpsql=concat('select * from (',tmpsql,') a');
prepare sqlstr from tmpsql;
execute sqlstr;
end;
作者: ls3648098 发布时间: 2011-07-21
1 你下面的似乎漏掉了union all
2 可能考虑N个单个insert select可能会比N个union all更快,这个要实测
3 临时表是否存在约束,导致insert的时候会出问题,而这正是他的目的?
2 可能考虑N个单个insert select可能会比N个union all更快,这个要实测
3 临时表是否存在约束,导致insert的时候会出问题,而这正是他的目的?
作者: shine333 发布时间: 2011-07-21
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28