Обязательно используйте пул соединений или что-то подобное.Это, безусловно, самый большой фактор.
Также может помочь использование PrepraredStatement
, которое фактически сохраняется в запросах сервлета, чтобы избавить MySQL от анализа запроса каждый раз.
Оба вместеможно реализовать, просто сохранив соединение с БД, а также PreparedStatement
в ThreadLocal
, но это предполагает, что контейнер сервлета использует пул потоков.
Обновление: c3p0 , очевидно, реализует как соединение, так и пул операторов, так что я бы просто использовал это.