Mám jednoduchý dotaz
var count = await _context.ExchangeRate.AsNoTracking().CountAsync(u => u.Currency == "GBP");
Tabulka má pouze 3 Sloupce a 10 řádků údajů.
Když jsem se pokusil provést dotaz z Čistých 5 projekt trvá kolem 2,3 sekundy poprvé a 500ms (+- 100) pro následné požadavky. Když jsem narazila na stejnou žádost v SSMS se vrací v téměř žádný čas (45ms, jak je vidět v sql profiler).
Jsem implementoval ARITHABORT NA v EF z tu
Když vidím v SQL Profiler je nastavení ARITHABORT ON ale stále dotazu trvá stejnou dobu pro první žádost, a v následujících požadavků.
Jak mohu dosáhnout rychlosti stejné jako SSMS rychlosti dotazu. Potřebuji dotaz spustit opravdu rychlost jako můj projekt má požadavek na návrat reakce na 1 sekundu (je Třeba, aby alespoň 5 jednoduchých DB hovory...pokud 1 hovor trvá 500ms pak je přechod 1 druhý požadavek)
Edit
Snažil se i ADO.Net. Provádění dobu trvalo, jak je vidět v SQL Profiler je 40ms, kde, jak, kdy dosáhla kód je téměř 400ms. Tak velký rozdíl
using (var conn = new SqlConnection(connectionString))
{
var sql = "select count(ExchangeRate) as cnt from ExchangeRate where Currency = 'GBP'";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SET ARITHABORT ON; " + sql;
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
conn.Open();
var t1 = DateTime.Now;
var rd = cmd.ExecuteReader();
var t2 = DateTime.Now;
TimeSpan diff = t2 - t1;
Console.WriteLine((int)diff.TotalMilliseconds);
while (rd.Read())
{
Console.WriteLine(rd["cnt"].ToString());
}
conn.Close();
}