1.Потому что, как правило, при этом идет обмен по сети, а это долгая операция (она в любом случае дольше, чем если бы и клиент и сервер были бы на одном компьютере).
2.На открытие сетевых соединений (и соединений с БД) тратится определенное количество системных ресурсов. Если у вас сервер, на каждый запрос открывает новое соединение с БД, то при определенном количестве запросов, посланных в короткий промежуток времени ваш сервер либо упадет, либо перестанет подключать новые соединения (возможно первым упадет сервер БД). То количество соединений, которое может одновременно обработать сервер обычно зависит от количества памяти. Но бороться с DOS атаками путем увеличения памяти сервера - глупое занятие.
3.При закрытии сетевого соединения сначала нужно разорвать его с удаленной стороной (если это TCP), а это то же генерирует сетевой трафик. Затем освободить системные ресурсы, связанные с этим соединением.