0

我正在寻找遍历 USERS 表,并且对于根据我的 where 子句选择的每个用户,在 LOOP 中执行一堆 mysql 查询,包括创建临时表、使用准备语句等

应该这样做,就性能而言,最好的方法是什么。使用 while、for each、for、repeat ?

eg.(伪代码)

foreach user_name in (select user_name from users where user_type = 'SP' and active = 'Y')
do
    set @l_query1 = concat("create temp_table_t1 select * from ...")
    PREPARE ..
    EXECUTE ...

    set @l_query2 = ... 
    ....
    .... etc .. 
done

好的,我有一个表 users,其中 pK = user_name。

所以,这个查询将很快执行,我只需要循环通过这个结果集,并在循环中执行剩余的 mySQL 查询。我如何通过简单选择的结果集循环?

谢谢

4

1 回答 1

0

whilefor-eachrepeat等在性能上没有区别。

如果您正在寻找性能提升,请考虑在哪里可以减少代码在数据库上执行的查询数量。例如,为所有用户运行一次查询而不是为每个用户运行一次查询将有很大帮助。

于 2012-06-22T08:25:06.870 回答