У меня проблема с использованием SQLiteParameters и оператора LIKE в запросе SQLite. Вот фрагмент кода, и я прошу прощения, если у меня здесь недостаточно кода. Если это так, я могу легко опубликовать больше.
Низкая производительность:
using (OdysseyDataContext entities = new OdysseyDataContext())
{
var results = entities.SearchResults.SqlQuery(
"SELECT * FROM SearchResults WHERE ContactName LIKE @ContactName",
new SQLiteParameter("@ContactName", "test")
);
}
Отличная производительность:
using (OdysseyDataContext entities = new OdysseyDataContext())
{
var results = entities.SearchResults.SqlQuery(
string.Format(
"SELECT * FROM SearchResults WHERE ContactName LIKE '{0}'",
"test"
)
);
}
Другой важный код:
public class OdysseyDataContext : DbContext
{
public DbSet<SearchResult> SearchResults { get; set; }
}
public class SearchResult
{
[Key]
public Guid Id { get; set; }
public string ContactName { get; set; }
}
Первый пример занимает 700 мс для выполнения, что мой руководитель считает неприемлемым. Второй пример занимает 7 мсек. Почему разница? Есть ли что-то, что я делаю совершенно неправильно, чтобы заработать себе статус новичка?
Заранее спасибо!