mysql 存储过程嵌套调用,在调用者中对被调用者返回的记录集进行处理,有关问题是怎么再调用者中获得被调用者的记录集呢?临时表会不会速度太慢呢

mysql 存储过程嵌套调用,在调用者中对被调用者返回的记录集进行处理,问题是如何再调用者中获得被调用者的记录集呢?临时表会不会速度太慢呢?

mysql 存储过程嵌套调用,在调用者中对被调用者返回的记录集进行处理,问题是如何再调用者中获得被调用者的记录集呢?临时表会不会速度太慢呢?



在MYSQL中只有用临时表的方法来处理,如果记录不多,速度不会太慢


通过存储过程再调用存储过程,没有办法直接返回记录集或游标。只能通过临时表。具体速度没有测试过,MyIASM理论上速度不会太慢。但要看具体情况。

[color=#FFFFFF][/color]




如果记录多的话,没有办法,速度慢一些,在查询字段上建立索引试试


没关系,临时表是session 级的。也就是仅在一个连接内可见。不同连接进去创建的临时表是不会相互影响的。当连接断开时,这个临时表也就被自动删除了。




楼上说的有理,继续关注


你用的WEB调用,所以每次都会产生一个新的connection. 所有没关系。直接用就可以了。不会互相干扰的。除非你在一个联接内要调两次这个存储过程。如果这样的话,你应该在存储过程的最后返回时drop 掉这个表




不删除就要TRUNCATE,删除要快一些

将参数带上

CREATE TABLE #TMP(字段列表)

as SELECT * FROM TEST_TABLE LIMI cs1,cs2

一个SP就可以解决了嘛


 CREATE TABLE #TMP 你这不是临时表啊。

CREATE TEMPORARY TABLE #TMP




临时表相对于工作表而言,用

CREATE TABLE #TMP 

OR

CREATE TEMPORARY TABLE #TMP

均可




DELIMITER $$

CREATE PROCEDURE SW(in cs1 int,in cs2 int)

BEGIN

DROP TEMPORARy TABLE IF EXISTS TMP;

set @ff=concat(‘CREATE TEMPORARy TABLE TMP’,

‘ as SELECT * FROM TEST_TABLE LIMIt ‘,cs1,’,’,cs2);

select @ff;

prepare dd from @ff;

execute dd;

SELECT * FROM TMP a LEFT JOIN TEST_TABLE_A b on a.id=b.id;

DROP TEMPORARy TABLE TMP;

END$$

DELIMITER ;

mysql 存储过程嵌套调用,在调用者中对被调用者返回的记录集进行处理,有关问题是怎么再调用者中获得被调用者的记录集呢?临时表会不会速度太慢呢

相关文章:

你感兴趣的文章:

标签云: