Это зависит от того, легче ли найти данные во время цикла while или в самом запросе.
Таким образом, если БД должна основывать подзапрос на результате каждой строки в основном запросе, а в основном запросе насчитывается 1000 строк и 100 результатов, она должна проверить все строки 100 раз, так что это 100 000 подзапросов, которые он выполняет.
Так что думайте, это количество результатов основного запроса. Если ваш цикл while должен запрашивать БД 100 раз, в то время как БД может сделать это намного быстрее и эффективнее за один запрос, это лучше. Но если вам нужно подмножество ответов, которые вы можете сказать «запрос только на основании последнего набора результатов», цикл while лучше.