哪个更快?游标循环中的多个更新查询,还是单个查询?例如,在这种情况下,哪个更快?此查询在触发器中。
循环中的多个查询
DECLARE done INT DEFAULT FALSE;
DECLARE record_id INT;
DECLARE cur CURSOR FOR SELECT id FROM table1 WHERE column = 0;
OPEN cur;
users_loop: LOOP
FETCH cur INTO id;
IF done THEN
LEAVE users_loop;
END IF;
UPDATE table2 SET column = 0 WHERE id = id;
END LOOP;
CLOSE cur;
Run Code Online (Sandbox Code Playgroud)单一查询
CREATE TEMPORARY TABLE tmp_table (id int(10));
INSERT INTO tmp_table SELECT id FROM table1 WHERE column = 0;
UPDATE table2 SET column = 0 WHERE id IN(SELECT id FROM …Run Code Online (Sandbox Code Playgroud)编辑] 下面的查询不是我遇到性能问题的实际查询。这只是一个简化的查询。因为我只想知道是否可以将多个结果存储到一个变量中并将该变量用于 IN 条件。
我在下面的一个过程中有这个查询,我想对其进行更改以进行优化。
SELECT * FROM request WHERE facility_id IN (SELECT facility_id FROM facility);
Run Code Online (Sandbox Code Playgroud)
我想做的是将子查询存储到一个变量中并在主查询中使用该变量。
SET @facilities = (SELECT facility_id FROM facility);
SELECT * FROM request WHERE facility_id IN (@facilities);
Run Code Online (Sandbox Code Playgroud)
但我有一个错误Subquery returns more than 1 row。我该怎么做?任何帮助表示赞赏。
我找到了一些建议这样的链接http://www.mysqlperformancetuning.com/how-to-speed-up-mysql-by-optimization?nocache=1#comment-961。但我想不通。