170 похожих чатов

Ребят, а Entity Framework и высокопроизводительные запросы к БД это

несовместимые понятия?

4 ответов

14 просмотров

отключай Tracking

А в чём проблема-то? Какой запрос тормозит?

Смотря как его использовать. EF довольно-таки неоптимальные SQL-запросы генерирует и много чего не умеет из того, что можно сделать на чистом SQL. Но это не проблема одного EF, это проблема любого ORM. В итоге, когда есть требование к высокой производительности в сильно нетривиальных запросах и на очень больших массивах данных, я пишу вьюхи и table-valued функции, и уже их прокидываю в EF. На уровне чистого SQL можно оптимизировать планы запросов, а при генерации чёрт знает какого SQL фреймворком это нереально. Как яркий пример - это "оконные функции" и сегментирование данных, которые позволяют очень быстро на уровне SQL решать целый класс задач (первые или последние значения в группах, выделение только изменённых данных по сравнению с предыдущим значением, нарастающий итог, сумма по n предыдущих значений, ...) и это невозможно эффективно выразить на уровне ORM. Если для таких вычислений использовать классический SQL без оконных функций - скорость и расход памяти будут на порядки хуже. А ещё есть такие вещи как PIVOT/UNPIVOT, рекурсивные запросы (через CTE). ORM-ы хороши для запросов и обновления чётко определённых сущностей по одной. Когда дело доходит до массированных вычислений на больших наборах данных и до массированных обновлений данных - без чистого SQL нечего делать, а в особо жестоких случаях (вставка больших объёмов данных) даже SQL не катит, надо делать BULK INSERT.

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта