Будет ли индексирование таблицы SQL улучшать производительность оператора LINQ? - PullRequest
6 голосов
/ 05 августа 2010

Извинения за то, что вполне может быть глупым вопросом.

Я просто заинтригован тем, что (а) индексирование улучшит производительность (б) как это улучшит производительность и (в) почему оно улучшитсяпроизводительность?

Кроме того, если это повысит производительность, будет ли это повсеместно для LINQ to SQL, LINQ для объектов, LINQ для объектов и т. д. и т. д.

Опять же, еслиэто действительно глупый вопрос, я прошу прощения.

Ответы [ 5 ]

4 голосов
/ 05 августа 2010

Это повысит производительность, если и только если ваш запрос LINQ вызовет выполнение оператора SQL, который может использовать индекс - поскольку при использовании Linq-To-Sql ваш запрос LINQ транслируется в SQL заявление (отсюда и название).

Например, следующий запрос явно выиграет от индекса по столбцу LastName таблицы Customers.

var results = from c in db.Customers
    where c.LastName == 'Smith'
    select c;
1 голос
/ 05 августа 2010

Как и все SQL - это зависит.

Если у вас маленькая таблица, это не имеет значения (сегодняшнее значение для "small" - <3000 строк). </p>

Если ваш запрос вернет более 30% строк в таблице, он, вероятно, будет быстрее без индекса.

Однако если вы хотите выбрать одну или две конкретные строки из большой таблицы, то индексирование некоторых столбцов, которые вы используете в операторе where (аргументы поиска, передаваемые в LINQ), значительно ускорит процесс.

Кроме того, если вы часто объединяете таблицы, то предикаты объединения (столбцы, используемые в операторе «ON» для присоединяемой таблицы) должны быть проиндексированы. Это может сократить время ответа на некоторые запросы с часов до секунд.

0 голосов
/ 05 августа 2010

LINQ to SQL генерирует оператор SQL, вы можете увидеть этот оператор в различных утилитах, таких как Linq pad .Когда ваш запрос будет выполняться в SQL Server, индексы определенно улучшат производительность.

  • улучшит производительность индексирования - Да.
  • как это улучшит производительность - Читать об индексах.
  • почему это улучшит производительность? - У меня действительно нет ответа на этот вопрос.

Кроме того, если это улучшит производительность, будет ли это так для всехLINQ to SQL, LINQ to Entities, LINQ to Objects и т. Д., И т. Д.

Ответ таков: какова связь таблицы SQL с объектом?

0 голосов
/ 05 августа 2010

Для повышения производительности индексирование следует использовать с умом. Например. Вы должны проиндексировать ключевые столбцы, по которым вы запрашиваете или к которым присоединяетесь.

http://www.sql -server-performance.com / советы / optimizing_indexes_general_p1.aspx

Индексирование обычно улучшает select производительность запроса, но немного увеличивает insert и update раз, так как индекс должен быть пересчитан.

0 голосов
/ 05 августа 2010

Это может улучшить производительность, если вы правильно индексировать.LINQ просто создает закулисную SQL-статистику ... , если оператор использует ваш индекс, тогда он улучшит производительность ... если нет, то не будет.

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