PDO и SELECT WHERE IN

bicyclist

Новичок
Делаю SELECT запрос по массивам id в цикле. количество элементов в массиве может быть разным в каждой итерации цикла.
Код:
foreach($GlobalArray as $k => $Array){
    $sql_string = 'SELECT name FROM tags WHERE id IN ('. str_repeat('?,', count($Array)-1) . '?)';
    $stmt = $db->prepare($sql_string);
    $stmt->execute($Array);
}
Вопрос: мне каждый раз компилировать запрос в теле цикла, или есть способ один раз скомпилировать его за пределами цикла, и в цикле только подставлять разные массивы?
 

Фанат

oncle terrible
Команда форума
Хороший вопрос.

Да, каждый раз.
Подготовленные запросы работают только с фиксированным числом параметров.

Но особо переживать не стоит, поскольку та компиляция занимает реально копейки, и прирост практически неразличим.

Оптимизировать следует по другим направлениям, например сделать один большой запрос 1 раз, или посмотреть откуда приходят данные. Если из БД, то переписать на джойн
 
Сверху