当我有大约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
表只有actor
和id
。
答案 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上有一个索引。这可能会大大加快查询速度。