Node-код в примере некорректен по отношению к поставленной задаче:
for (var i = 0; i < 100000; i++) {
connection.query(
'SELECT * FROM dreg_document',
function(error, result, fields){}
);
}
Тут просто в синхронном цикле вызывается 100000 асинхронных запросов БЕЗ ожидания их завершения. Просто 100000 раз кинули запрос и закончили работу программы подсчитав время. Автор вопроса не понимает как работает node.js и в связи с этим неверно трактует полученный результат. Если ожидать каждого ответа на запрос к SQL-серверу, то результат будет совсем другим.