Стандартный SQL-запрос намного быстрее, чем Linq 2 SQL - PullRequest
2 голосов
/ 17 апреля 2009

Привет, у меня проблема с кодом, я сравнил три способа реализации запроса к базе данных

  1. Стандартный SQL-запрос (из * Выбрать ...)
  2. LinQ Query
  3. Предварительно скомпилированный LinqQuery (CompiledQuery)

Теперь результат, который я получил, состоит в том, что Precompiled LingQuery работает в 5 раз быстрее, чем LinQ Query, но гораздо интереснее то, что Standard SQL Query примерно в десять раз быстрее, чем Precompiled LinqQuery. Таблица, с которой работают мои запросы, представляет собой одну простую таблицу, не связанную с другими таблицами.

Факт, который делает таблицу интересной, состоит в том, что она состоит из 5 столбцов, которые представляют все вместе первичный ключ, который я имею в виду. все столбцы вместе уникальны, поэтому в таблице нет строк, похожих на другие. Все столбцы проиндексированы.

Кто-нибудь имеет представление о том, что не так с LinQ?

С уважением

Себастьян

Ответы [ 3 ]

2 голосов
/ 17 апреля 2009

Вы смотрели на фактический запрос, который генерирует linq? Сравнение с вашим запросом SQL может дать вам несколько ответов.

Вы можете сделать это либо с помощью SQL Profiler, либо прослушивая свойство Out в linq datacontext? Вы можете сделать это так в консольном приложении:

DataContext ctx = new ...;
ctx.Log = Console.Out;
//Now execute the linq query, and the query will be output to the console.
2 голосов
/ 17 апреля 2009

Просто убедитесь, что ваши запросы не кэшированы, это может исказить результаты.

1 голос
/ 17 апреля 2009

Как вы измеряете? Используете ли вы все результаты запроса или просто выполняете запрос? (Например, LINQ может получить результаты для вас.)

Это происходит во второй раз, когда вы выполняете запрос, или вы просто измеряете время, затраченное на первое выполнение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...