为什么这个MySQL查询需要这么长时间,我该如何解决?

时间:2013-01-11 03:00:41

标签: mysql sql performance

当我有大约30名演员时,这个查询需要20多秒。有没有办法大幅加快速度?我确信有,我只是不知道以什么方式或从哪里开始。

  REPEAT
    FETCH actors INTO a;
      IF a != '' THEN
        IF !(SELECT COUNT(*) FROM movieactor WHERE actor = a) THEN
          INSERT INTO movieactor (actor) 
          VALUES (a);
         END IF;
      END IF;
  UNTIL done END REPEAT;

movieactor表只有actorid

1 个答案:

答案 0 :(得分:1)

您确实需要显示表定义,索引,查询计划和触发器以了解性能。但是,这个查询有一些明显的建议。

为什么不使用set操作,例如:

insert into movieactor(actor)
    select a
    from actors
    where a <> '' and
          a not in (select * from (select actor from movieactor))

(我认为需要双重选择来解析这个问题。)

其次,你应该在movieactor.actor上有一个索引。这可能会大大加快查询速度。