powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ - проще
25 сообщений из 58, страница 2 из 3
LINQ - проще
    #39748373
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachДмитрий МухВМоисеев,

автор топика не удосужился ответить на вопрос о типа колонки Comments, ему походу топик совсем не интересен

ну, допустим, varchar(MAX). возможно, извлекает только по Id. возможно в какой-то журнал извлекает записи, где это поле только первые надцать символов. что дальше?
А то, что надо значть особенности хранения NVARCHAR(MAX) и как это негативно складывается на производительности выборки, когда нужно не одну запись по Id получить, а множество, да ещё и с группировкой как у ТС.
...
Рейтинг: 0 / 0
LINQ - проще
    #39748374
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправлюсь: как негативно это может сложится на производительности выборки.

Я же не знаю какие там у ТС объёмы.
...
Рейтинг: 0 / 0
LINQ - проще
    #39748517
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TОптимизатор БД не переоценивай. В MS SQL он продвинутый, но не сильно. На сложных запросах может выбирать очень неоптимальные планы выполнения.

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

Это не так.
...
Рейтинг: 0 / 0
LINQ - проще
    #39748518
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttбольшим количеством запросов.

*способов
...
Рейтинг: 0 / 0
LINQ - проще
    #39748563
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttDima TОптимизатор БД не переоценивай. В MS SQL он продвинутый, но не сильно. На сложных запросах может выбирать очень неоптимальные планы выполнения.

Неоптимальный план выполнения будет только при изначально неправильно составленном запросе.
А что значит неправильно? Получившийся в начале топика запрос он как составлен?

Ну и сильное конечно утверждение: "только при изначально неправильно составленном запросе"
...
Рейтинг: 0 / 0
LINQ - проще
    #39748564
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕсть много сахара, позволяющего сократить запрос
Например?
...
Рейтинг: 0 / 0
LINQ - проще
    #39748613
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухА что значит неправильно? Получившийся в начале топика запрос он как составлен?

Ну и сильное конечно утверждение: "только при изначально неправильно составленном запросе"


Это нормальное утверждение. Посмотри на LINQ запрос в начале топика с точки зрения коллекции объектов. Посмотри на получившийся запрос в SQL. Сделано ровно то, что было запрошено в LINQ.

Если запрос LINQ собирается динамически, то гарантировано всё будет правильно работать.

Ты начинаешь смотреть на задачу иначе с точки зрения объединения запросов или оконных функций, будучи уверенным, что это действительно _на порядки_ будет быстрее. С чего вдруг-то?

Неправильно составленный запрос, это который также неоптимален, или неверен и в LINQ.
...
Рейтинг: 0 / 0
LINQ - проще
    #39748614
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухhVosttЕсть много сахара, позволяющего сократить запрос
Например?

with, расширяющие функции, раширенные функции и операторы для группировки, оконные функции, дофига всего.
...
Рейтинг: 0 / 0
LINQ - проще
    #39748618
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий Мухпропущено...

Например?

with, расширяющие функции, раширенные функции и операторы для группировки, оконные функции, дофига всего.
И почему же это сахар? К примеру в курсе как работают оконные функции под капотом?
...
Рейтинг: 0 / 0
LINQ - проще
    #39748635
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухИ почему же это сахар? К примеру в курсе как работают оконные функции под капотом?

В курсе, не во всех случаях конечно.

Скажи ещё, не знаешь, как, например, пронумеровать записи без оконных функций? ))
...
Рейтинг: 0 / 0
LINQ - проще
    #39748647
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий МухИ почему же это сахар? К примеру в курсе как работают оконные функции под капотом?

В курсе, не во всех случаях конечно.

Скажи ещё, не знаешь, как, например, пронумеровать записи без оконных функций? ))
Я знаю как переписать запрос в стартовом посте не в четыре этажа, а в один, гораздо короче и без оконных функций.
И про меньше или равно и COUNT я тоже знаю
...
Рейтинг: 0 / 0
LINQ - проще
    #39748734
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухЯ знаю как переписать запрос в стартовом посте не в четыре этажа, а в один, гораздо короче и без оконных функций.

Да, но это будет другой запрос. Даже если он будет возвращать аналогичные результаты. Просто прочитай, что задекларировано в LINQ. А если вот эти Count-ы, будут использовать динамические LINQ выражения, или вообще всё строится на спецификациях? Не всё так просто, как может показаться в лоб.

Да и в LINQ можно переписать запрос, вот эта задача выглядит по-интереснее.
...
Рейтинг: 0 / 0
LINQ - проще
    #39748735
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или нам не нужны Count-ы в результатах, а как условие для сортировки или фильтрации, м?
...
Рейтинг: 0 / 0
LINQ - проще
    #39748770
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttDima TОптимизатор БД не переоценивай. В MS SQL он продвинутый, но не сильно. На сложных запросах может выбирать очень неоптимальные планы выполнения.

Неоптимальный план выполнения будет только при изначально неправильно составленном запросе.
Неоднократно сталкивался с тормозами MSSQL в запросах с подзапросами
Код: sql
1.
select ... from (select ...) ...


Оптимизатор почему-то строил нездоровый план. В итоге лечил временными таблицами
Код: sql
1.
2.
select ... into #tmp ...
select ... from #tmp ...


БД большая, некоторые запросы ускорялись в 10 и более раз.
...
Рейтинг: 0 / 0
LINQ - проще
    #39748779
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TОптимизатор почему-то строил нездоровый план.
Вот первых учесть все правила построения оптимального плана любого запроса - это не реально.
А во вторых оптимизатор ограничен по времени. Из того, что успел построить, выбрал более подходящий.

Никакой магии.
...
Рейтинг: 0 / 0
LINQ - проще
    #39748780
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttИли нам не нужны Count-ы в результатах, а как условие для сортировки или фильтрации, м?
Перечитай первое сообщение в топике
...
Рейтинг: 0 / 0
LINQ - проще
    #39748786
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima ThVosttпропущено...


Неоптимальный план выполнения будет только при изначально неправильно составленном запросе.
Неоднократно сталкивался с тормозами MSSQL в запросах с подзапросами
Код: sql
1.
select ... from (select ...) ...



Оптимизатор почему-то строил нездоровый план. В итоге лечил временными таблицами
Код: sql
1.
2.
select ... into #tmp ...
select ... from #tmp ...



БД большая, некоторые запросы ускорялись в 10 и более раз.темка обсуждения бага сиквела в ветке админов бд есть?
Т.к.лечится временными это жестоко)
...
Рейтинг: 0 / 0
LINQ - проще
    #39748792
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий МухЯ знаю как переписать запрос в стартовом посте не в четыре этажа, а в один, гораздо короче и без оконных функций.
Да, но это будет другой запрос. Даже если он будет возвращать аналогичные результаты.
love_bachпочему я тебя понял, а skyANA начал задавать "уточняющие" вопросы?
Потому, что skyANA, с**а, знал, что так будет.

hVosttskyANAЧто значит тот же самый? Возвращающий аналогичный результат?
да, аналогичный результат при тех же вводных
...
Рейтинг: 0 / 0
LINQ - проще
    #39748793
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПросто прочитай, что задекларировано в LINQ. А если вот эти Count-ы, будут использовать динамические LINQ выражения, или вообще всё строится на спецификациях? Не всё так просто, как может показаться в лоб.
"Трудно найти в тёмной комнате чёрную кошку... особенно, если её там нет!"

ТС не знал, как написать на SQL то, что ему надо, и написал на LINQ.
Посмотрел сгенерированный текст запроса и понял, что сам бы он скорее поседел, чем додумался до решения на SQL.
Вынес это "достижение" на форум и спалился.

Какие динамические выражения? Какие спецификации? Я тебя умоляю
...
Рейтинг: 0 / 0
LINQ - проще
    #39748857
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttИли нам не нужны Count-ы в результатах, а как условие для сортировки или фильтрации, м?
Перечитай первое сообщение в топике


Ну я немного шире гляжу на задачу. Понятно, что если чисто в конкретные данные упираться, то да, там типа запрос компактный можно написать, но как это сделать в рамках EF? Не было сказано.
...
Рейтинг: 0 / 0
LINQ - проще
    #39748858
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухТС не знал, как написать на SQL то, что ему надо, и написал на LINQ.
Посмотрел сгенерированный текст запроса и понял, что сам бы он скорее поседел, чем додумался до решения на SQL.
Вынес это "достижение" на форум и спалился.

Какие динамические выражения? Какие спецификации? Я тебя умоляю


Ну это не интерсно. На SQL может любой, а как насчёт в EF?
...
Рейтинг: 0 / 0
LINQ - проще
    #39748876
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий МухТС не знал, как написать на SQL то, что ему надо, и написал на LINQ.
Посмотрел сгенерированный текст запроса и понял, что сам бы он скорее поседел, чем додумался до решения на SQL.
Вынес это "достижение" на форум и спалился.

Какие динамические выражения? Какие спецификации? Я тебя умоляю


Ну это не интерсно. На SQL может любой, а как насчёт в EF?

Для начала .Sum() вместо .Count() попробовать?
...
Рейтинг: 0 / 0
LINQ - проще
    #39748904
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAДля начала .Sum() вместо .Count() попробовать?

Ну да, а ещё в LINQ можно несколько запросов с одним джойнить, проблема только с outer join.
...
Рейтинг: 0 / 0
LINQ - проще
    #39748920
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,

Linq определённо крут, если вы понимаете, что будет на выходе и умеете дизайнить базу данных. Потому что в неумелых ручках потом нехилая лажа может возникнуть.

А длинный запрос очень часто бывает более производительным, но не факт, что это относится к данному примеру.
...
Рейтинг: 0 / 0
LINQ - проще
    #39748931
Lessyp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может вы господа сначала документацию почитаете, прежде чем вываливать на форум всякую бредятину? А то у одного оптимизатор хватает первый план который успел построить за заданное время, у второго проблемы с outer join'ом...
...
Рейтинг: 0 / 0
25 сообщений из 58, страница 2 из 3
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ - проще
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]