Linq к SQL: выберите оптимизацию

В Oracle значения DATE не имеют определенного формата, например DD-MON-YYYY ИЛИ DD/MM/RR и т. Д. Все поля DATE содержат подполя для столетия, года, месяца, дня, часов, минут и секунд, Это означает, что все поля DATE в Oracle действительно являются значениями меток времени с точностью до одной секунды. По умолчанию Oracle преобразует DATE в символьную строку, используя формат DD-MON-YY , но это просто формат по умолчанию - это не означает, что дата сохраняется в формате DD-MON-RR.

6
задан cllpse 14 October 2008 в 15:38
поделиться

6 ответов

Я настоятельно рекомендую LinqPad. Это свободно и позволяет Вам выполнить запросы LINQ динамично. Когда можно также посмотреть на SQL, который сгенерирован.

То, что Вы будете видеть, - то, что запрос LINQ переведет первый запрос в выбор только тех столбцов. Таким образом, это быстрее.

6
ответ дан 8 December 2019 в 14:49
поделиться

Если Вы ограничите размер набора результатов, только выбирая несколько определенных столбцов, то ДА он будет иметь влияние.

Разъяснение добавления РЕДАКТИРОВАНИЯ из комментария

То, как это лучше, это уменьшит размер результирующих данных, возвращенных из SQL, И это уменьшит размер объектов, раньше хранило результаты в памяти.

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

4
ответ дан 8 December 2019 в 14:49
поделиться

Дополнительно к тому, что другие сказали, новая структура без имени будет большим количеством объекта более легкого веса, чем объект Человека - это было бы намного быстрее даже при выборе всех столбцов. (У человека есть метод/поля и т.д. для поддержки обратной записи объекта к базе данных. Тип без имени не делает.)

1
ответ дан 8 December 2019 в 14:49
поделиться

Существует 3 аспекта с "быстрее" здесь.

  1. меньше данных передало средства быстрее. С другой стороны, это не получит это значительно быстрее, если Вы не выберете больше чем одну строку или если Ваша Личность содержит некоторые другие "тяжелые" столбцы - длинный varchars, изображение и т.д.
  2. как J. Curran указал, меньше памяти выделило средства быстрее. Тот же комментарий как в 1. применяется здесь.

  3. Ваш запрос выполняется быстрее, если у Вас есть индекс, содержащий все выбранные столбцы (или присоединенный к нему начинающий с SQL Server 2005). В этом случае механизм SQL Server не должен загружать страницу строкой в памяти - если это еще не там.

Лично я не потрудился бы пытаться оптимизировать свои запросы этот путь (если, поскольку я не сказал, что Ваши строки содержат двоичные данные или очень длинные строки, в которых Вы не нуждаетесь), частично потому что, если бы Вы решаете позже, что требуется иметь больше информации об этом выбранном Человеке, необходимо будет изменить код доступа DB по сравнению только с доступом к свойству в Вашем ПОСТЕПЕННО/АНОНИМНЫЙ КЛАСС.

3
ответ дан 8 December 2019 в 14:49
поделиться

Я думаю, что то же применяется, потому что LINQ к SQL переводит операции запроса Linq в команды SQL.

1
ответ дан 8 December 2019 в 14:49
поделиться

Если у Вас есть столбцы, которые являются очень большие, такие как двоичные файлы и изображения затем, это может иметь значительное значение, которое является, почему LINQ к SQL позволяет Вам указывать задержку, загружающуюся для определенных столбцов так, чтобы можно было все еще выбрать все объекты, не выполняя 'избранные новые' проекции.

1
ответ дан 8 December 2019 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: