Самый простой способ - сначала выполнить запрос, чтобы получить все ключи строки для обработки, но нет BLOB-данных.Затем выполните итерацию по этому списку (не в SQL) и извлеките данные BLOB из конкретной строки, сгенерируйте миниатюру любым способом, а затем запишите их обратно в столбец миниатюр для этой строки.Это может занять некоторое время, но, по крайней мере, вам не придется беспокоиться об ограничении памяти или о других подобных неприятных глупостях.Это хорошая идея, когда вы можете быть уверены, что больше ничего не использует БД, поэтому вы можете не беспокоиться о транзакциях, и, как только вы это сделаете, обновите код вставки / обновления строки, чтобы миниатюры сохранялисьобновляется во время обработки, а не как отдельный пакетный шаг.
Что касается того, должны ли изображения быть в БД, то это хорошо.Эскизы, вероятно, должны быть такими, но сами данные изображения могут быть довольно большими (особенно с большим количеством строк), поэтому, возможно, они должны храниться в виде отдельных файлов только с именами файлов в БД.Вы должны сбалансировать способность обычно обрабатывать данные быстрее (не имея всех этих данных изображения) с возможностью сохранять все данные согласованными (слишком легко попасть в проблемы, если что-то копается в данных изображения).Я не могу ответить на этот вопрос для вас, так как это требует более глубоких знаний о приложении - это ваша работа - но я надеюсь, что это говорит вам, о чем вы должны думать при принятии решения.