Мне нужно получить некоторые данные на основе ключевого слова, запрос проверен на 100% точность, но проблема в том, что загрузка reader
довольно медленная. Я попытался заменить этот запрос другим, вообще не содержащим inner join
, и загрузка была довольно быстрой. Поэтому мне интересно, поскольку в результате я выбираю только один столбец, почему DataTable.Load ()занимает так много времени? Это SQLite
ExecuteReader
, который загружает все результаты, а не только один столбец?
До использования 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();