SQLから4,000行を取得し、それらをオブジェクトのリストに配置するのに1分以上かかるいくつかのlinq操作を実行するメソッドがあります。私がやろうとしていることは、次のように要約できます。
- テーブルからすべての行を取得します
- 行フィールドに基づいて、各行を対応するオブジェクトにキャストします
- そのオブジェクトのリストを返します
つまり、データベースの行に対応するオブジェクトがあり、linqがそれらの行が含まれるテーブル内のすべてのオブジェクトのリストを返すようにします。
私がしていることはこれです:
public List<Article> GetAllArticlesFromDB()
{
using (DBEntities le = new DBEntities(this._efConnectionString))
{
IQueryable<ARTICLE> x = from row in le.ARTICLE select row;
List<Article> llr = x.Select(r => new Article
{
ArticleNumber = r.ARTICLE_NUMBER,
ArticleTitle = r.TITLE,
}).ToList();
return llr;
}
}
問題は、このクエリに1分以上かかることです。フィールドは2つだけで、1つはintで、もう1つは最大長255の文字列です。このフィールドに対する単純なSQLクエリは、1秒未満で機能します。ただし、このlinqクエリには1分以上かかります。どういうわけかこれを最適化できますか?