Если код выполняется медленно, основной причиной является наличие 50000 записей. Что именно вам нужно с 50000 Student
объектами? Если вы сможете найти способ решить вашу проблему, не читая все эти записи и не создавая все эти объекты, у вас будет более быстрый код.
Обновление
Хорошо использовать свой собственный класс. В большинстве случаев, когда дела идут медленно, это происходит потому, что ваш код привязан к вводу / выводу (вы проводите большую часть времени в ожидании ввода / вывода). Чтобы избежать всего этого ввода-вывода, вы можете уменьшить объем данных, которые вы извлекаете (возможно, удаляя ненужные столбцы или строки из ваших данных) или выполняя обработку в базе данных с помощью более сложного запроса или хранимой процедуры.
Обновление 2
Чтобы ответить на ваш дополнительный вопрос (почему создание списка объектов медленнее, чем получение DataSet
), я ожидаю, что чтение всего запроса как DataSet
будет только немного быстрее, чем создание объекта. Я не знаком с тем, как реализована эта библиотека MySQL .NET. Меня удивляет, что эти два метода имеют большую разницу в скорости . Возможно, MySqlDataReader
делает что-то глупое, как использование внутреннего DataSet
. Если производительность этих двух систем существенно отличается, вероятно, это то, что автор этой библиотеки должен исправить.
Обновление 3
Этот ответ для MySqlDataAdapter или MySqlDataReader для массовой передачи? имеет хороший совет; установка BatchSize
считывателя может быть полезной. Если размер пакета слишком мал для читателя, это сделает его менее эффективным при большом количестве записей, подобных вашей.