Производительность SQLite.NET с использованием SQLiteParameter с оператором LIKE

У меня проблема с использованием 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 мсек. Почему разница? Есть ли что-то, что я делаю совершенно неправильно, чтобы заработать себе статус новичка?

Заранее спасибо!

8
задан Terry 29 June 2011 в 20:14
поделиться