私はASP.NET MVC 5アプリケーションを構築して、一度にいくつかのレコード(2行から12行の間)に読み取り専用アクセスを取得します。レコードはOracle 11に格納され、Oracleの大きなキーなしのマテリアライズド・ビューからEntity Framework 6を介してアクセスされます。 List、IQueryable、IEnumerableでこれらのレコードを取得しようとしました。 (下記の例)Entity FrameworkのOracleマテリアライズドビューから10レコードを取得するVERY slow
public List<FACT> GetCollisionList(string collisionMRN)
{
var collisions = from c in _context.FACT
where c.COLLISION_RECORD_NUMBER.Equals
(DbFunctions.AsNonUnicode(collisionMRN),
StringComparison.OrdinalIgnoreCase)
select c;
return collisions.ToList();
}
レコードを返すのに約20秒かかっています。私の質問は次のとおりです。A.これらの3つの方法のうち、おそらく最も良いのは何ですか? (List、IQueryable、IEnumerable)------ B.キーなしのマテリアライズド・ビューは基本的な問題ですか? (私は.NETデータリポジトリにモデルを持っていますが、ビューに含まれる100以上の列のうち8つしか使用しません)。
このご意見は、 – Sampath
これは良い答えです!私はまだOracle側を変更するためにどのような選択肢があるかを見極めています。 –
ありがとうございました!非常に役立つ答えはこちら。 SampathとKacperはともにこの問題に非常に役立っていました。 –