Som jednoduchý dotaz
var count = await _context.ExchangeRate.AsNoTracking().CountAsync(u => u.Currency == "GBP");
Stôl má len 3 Stĺpce a 10 riadkov údajov.
Keď som sa snažil spustiť dotaz z Čistého 5 projekt je prijímanie približne 2.3 sekundy prvýkrát a 500ms (+- 100) pre následné žiadosti. Keď som narazila na istú žiadosť v SSMS to sa vracia v takmer žiadny čas (45ms ako je vidieť v sql profiler).
Implementovali sme ARITHABORT O v z EF tu
Keď vidím v SQL Profiler je nastavenie ARITHABORT, ale stále dotaz trvá rovnaký čas na prvé požiadanie a následné žiadosti.
Ako môžem dosiahnuť rýchlosť rovnaká ako SSMS dotaz rýchlosť. Potrebujem dotaz spustiť naozaj rýchlosť ako môj projekt má požiadavku na vrátenie odpoveď za 1 sekundu (je Potrebné, aby aspoň 5 jednoduchých DB hovory...ak 1 hovor trvá 500ms potom to je križovatka 1 druhá požiadavka)
Upraviť
Snažil s aj ADO.Net. Výkon čas vzal ako je vidieť v SQL Profiler je 40ms, kde, ako, kedy dosiahol kód je takmer 400ms. Takže veľký rozdiel
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();
}