public DataTable FetchData(string sQuery)
{
DataTable dtable = new DataTable();
using (SqlConnection conn = new SqlConnection(conString))
{
conn.Open();
using (SqlCommand sqlCmd = new SqlCommand(sQuery, conn))
{
SqlDataReader sdRead = sqlCmd.ExecuteReader();
dtable.Load(sdRead);
}
}
return dtable;
}
Datatable dt = FetchData(string sQuery);
foreach(DataRow row in table.Rows)
ClassA obj = new ClassA(row);
// Some manipulations
//.....
Class A
{
int id;
int name;
A(DataRow dr)
{
id = dr["ID"];
name = dr["Name"];
}
}
Мне нужно получить почти 15 000 000 строк из базы данных.Datatable Performance в C# .Net
Мне нужны предложения для двух сценариев.
Я вызываю вышеуказанный метод 1-5 раз, поэтому, очевидно, он создает 1-5 соединений. Если значение 10-20 раз превышает производительность? (или создать одно глобальное соединение и открыть 1 соединение и обработать все, а затем закрыть в конце.)
А как насчет datatable? Любая альтернатива. Я думаю, что мне нужно отключить архитектуру для этой большой части строк. Мне нужно набивать мои собственные объекты класса с помощью полученных данных (или Iterate datareader, и использовать
List<objects>
внутри FetchData()).
Любые предложения?
«Мне нужно получить почти 15 000 000 записей из базы данных». - Что ты собираешься с ними делать? –
* Любые предложения? * Если - не загружать 15 миллионов строк одновременно. Что вам нужно делать с ними? Если это возможно: переместите обработку на сервер - обработайте данные, используя, например, T-SQL хранит процедуры и возвращает только значительно меньший результат, возвращаемый вашему приложению. –
@Mitch Wheat: Мне нужно получить почти 15 000 000 записей из базы данных. - Что вы собираетесь с ними делать. У меня есть класс Parser имеет свойства по отношению к столбцам, которые я получил. Я заполняю объект и делаю некоторые манипуляции с этим объектом. Прямо сейчас я повторяю типы данных и создаю объекты. –