IN (?) и mysqli prepared statement

Саня

Новичок
IN (?) и mysqli prepared statement

Здравствуйте!

Есть ли возможность использовать mysqli prepared statement с запросом типа 'SELECT * FROM my_table WHERE id IN (?)' для выбора нескольких значений?
Иными словами, можно ли как-то забиндить в такое выражение массив?
 

Wicked

Новичок
но можно так:
'SELECT * FROM my_table WHERE id IN (' . join(', ', array_fill(0, count($ids), '?')) . ')'
 

Саня

Новичок
Спасибо, но это решение не подходит.
Этот запрос будет выполняться несколько раз с разным количеством значений в IN-е. Я хочу использовать PS из-за производительности, чтобы MySQL не парсил один запрос несколько раз.
 

Фанат

oncle terrible
Команда форума
Жесть какая.
А ты уверен, что хоть какая-то разница в производительности будет? или тебе кто-то рассказал, кто сам не понимает, а ты поверил?

А там, где тебе рассказали, что PS тебе сделают офигенную производительность, не рассказывали еще, что несколко одинаковых запросов подряд - это очевидная дыра в проектировании и последствия в плане производительности будут куда серьезнее?
 

Саня

Новичок
Знал, что это напугает :)

Это не сайт, а обработчик, которые бежит в фоновом режиме. Он запускается кроном раз в минуту, берёт из базы свежие ИД записей, которые надо обработать. Затем берёт этим запросом записи и обрабатывает. Потом ждёт секунду, и проделывает операцию заново. Так что за каждый запуск этот запрос выполняется 60 раз.

Ясно, что особых проблем с производительностью тут нет. Но если есть возможность не парсить один и тот же запрос 60 раз, то почему бы этим не воспльзоваться.

Чтобы быть увереным, хорошо бы попробовать. Но, как видно, это не возможно.
 

Фанат

oncle terrible
Команда форума
Что-то мешает тебе проверить, улучшает ли использование PS производительность? Ну, или предположить хотя бы. Насколько эта разница будет заметна
 

Krishna

Продался Java
Потом ждёт секунду, и проделывает операцию заново. Так что за каждый запуск этот запрос выполняется 60 раз.
Это не те показатели, на которых надо озабачиваться препейред стейтментсами. Время, затрачиваемое на компиляцию запроса измеряться будет долями миллисекунд, а значит относительно суммарного времени запросов, при ограничении их плотности разом в секунду заметного веса иметь не будет. Если, конечно, в этом IN разумный по размеру массив.
 
Сверху