Нет, нет конструкции SQL для чтения и удаления строки за один раз.
Вы можете написать хранимую процедуру, которая делает это, хотя. Или вы можете кэшировать записи, которые вы уже прочитали в памяти (чтобы вы больше не читали их), а затем выполнить массовое удаление (DELETE FROM table WHERE id in (?)
). Это должно быть быстрее, чем многие одиночные DELETE.
Или вы могли бы рассмотреть другой подход к проблеме. Зачем вам нужно удалять столько строк при их чтении? Вы используете таблицу БД для передачи сообщений? Может быть, есть другая технология, которая больше подходит для вашей проблемы? Если вы чувствуете, что должны работать против установленных соглашений технологии, это может указывать на то, что вы не используете правильный инструмент для работы ...