Вам нужна быстрая обработка или низкая нагрузка на сервер? Определитесь - это не совместимо друг с другом.
Вывод разом всей таблицы - быстрая, но ресурсоёмкая операция (по CPU и HDD для MySQL и RAM для PHP).
Вывод с лимитом медленнее, но снижает нагрузку с MySQL и переводит её на PHP. При этом снимается нагрузка с HDD, переводится на CPU и RAM. В единицу времени нагрузка меньше, но суммарная - больше.
Но вывод 4000 позиций не нужная операция. Выводите по 200-300 на страницу или через AXAJ-подгрузку по 100 за раз. Это снизит нагрузку за единицу времени в разы, распределяя её по времени.
Вообще, есть 2 варианта всегда:
1) Разово загрузить сервер большой нагрузкой и получить ответ быстро.
2) Распределить нагрузку по времени, получить ответ с задержкой по времени, но без риска перегрузить сервер
К примеру, если у Вас VDS с 100 МГц (условно) и за каждые дополнительные 10 МГц Вам надо платить - выгоднее распределять нагрузку. Если у Вас выделенный сервер, который занимается только этой операцией - есть смысл получать результат мгновенно, но с 100% загрузкой CPU/HDD/RAM.
P.s. 4000 записи для MySQL копейки. У меня был опыт работы с большими таблицами, так 50 Мб таблицы полностью скачать и закачать обратно - 18 секунд. Операция с базой (селект) 50 000 записей - порядка 2 секунд.
P.p.s. можно поставить эксперимент. Написать PHP-скрипт, который в цикле выполняет некую операцию, а через 30 секунд автоматом убивается. И Вы увидите, что за 30 секунд мускул успеет сделать больше 100 тысяч записей. И это в 1 поток с побочными нагрузками. В несколько потоков добивался 50 тысяч запросов в секунду, но это после дикой оптимизации сервера.