Читатель DataTable загружается очень медленно

Мне нужно получить некоторые данные на основе ключевого слова, запрос проверен на 100% точность, но проблема в том, что загрузка readerдовольно медленная. Я попытался заменить этот запрос другим, вообще не содержащим inner join, и загрузка была довольно быстрой. Поэтому мне интересно, поскольку в результате я выбираю только один столбец, почему DataTable.Load ()занимает так много времени? Это SQLiteExecuteReader, который загружает все результаты, а не только один столбец?

До использования DataTable среднее время выполнения каждого reader.Read()составляло 7 секунд.

Это мой код:

_database.Connect();

var selectCommand = new SQLiteCommand(
@"SELECT A.ID AS MY_ID FROM MD 
INNER JOIN TMD ON MD.ID = TMD.ID_MD 
INNER JOIN TR ON TR.ID = TMD.ID_TR 
INNER JOIN P ON P.ID = TR.ID_P 
INNER JOIN DP ON DP.ID_P = P.ID 
INNER JOIN CD ON CD.ID = DP.ID_CD 
WHERE CD.DESC = @desc"
);

selectCommand.Parameters.AddWithValue("@desc", value);

using (DbDataReader reader = _database.ExecuteQuery(selectCommand))
{
    DataTable data = new DataTable("MyData");
    data.Load(reader);
}
_database.Disconnect();
8
задан iCantSeeSharp 11 August 2013 в 11:39
поделиться