Смотря насколько сложный 1 запрос. Иногда лучше >100 мелких запросов чем 1 реально сложный.
Но часто есть 3 вариант - 2 или 3 небольших запроса с последующей обработкой полученных массивов.
Переделал запрос и заработало, но остается вопрос почему не работал тот вариант, хотя в мануале указаны такие примеры. "INSERT INTO `codes` SET `DATE` = ?, `CODE` = ?"