キーワードに基づいていくつかのデータをフェッチする必要があります。クエリは100%正確にテストされますが、問題はの読み込みreader
がかなり遅いことです。このクエリをsをまったく含まないクエリに置き換えてみましたがinner join
、読み込みはかなり高速でした。結果として1つの列しか選択していないのに、なぜDataTable.Load()にそれほど時間がかかるのでしょうか。1つの列だけでなく、結果全体をロードするのは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();