Sergey_Al
Новичок
Я выбрал вариант передачи массива в хранимую процедуру через строку вида '1,2,3,4,5'
После этого делаю PREPARE & EXECUTE.
Т.е. выглядит это как-то так:
Вопрос в следующем: мешает ли это mysql оптимизировать запрос? Может стоить переделать через временную таблицу или разница будет всё равно почти не заметна?
Как я понимаю, mysql заранее компилирует хранимые процедуры и потому их выполнение быстрее, но тут есть prepare, который скорее всего будет уже компилироваться после вызова.
После этого делаю PREPARE & EXECUTE.
Т.е. выглядит это как-то так:
PHP:
SET @t = CONCAT(
"SELECT
...
FROM
tbl
...
WHERE id IN (", ids, ")
ORDER BY FIELD(id, ", ids, ")"
);
PREPARE stmt1 FROM @t;
EXECUTE stmt1;
Как я понимаю, mysql заранее компилирует хранимые процедуры и потому их выполнение быстрее, но тут есть prepare, который скорее всего будет уже компилироваться после вызова.