我需要根据关键字获取一些数据,查询被测试为 100% 准确,但问题是加载reader
速度很慢。我尝试用根本不包含inner join
s 的查询替换此查询,并且加载速度非常快。所以我想知道,由于我只选择一列,为什么 DataTable.Load() 需要这么多时间?是加载整个结果而不仅仅是一列的SQLite
's吗?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();