Ну, это звучит как очень хорошее использование Parallel.ForEach
- так вы пробовали это?
Parallel.ForEach(queries, query => {
// Perform query
});
Возможно, вы захотите указать параметры для уровня параллелизма и т. Д. И убедитесь, что ваш пул соединений поддерживает столько соединений, сколько вы хотите. И, конечно же, измерьте производительность до и после, чтобы убедиться, что она действительно помогает.