|
LINQ - проще
|
|||
---|---|---|---|
#18+
Сегодня осознал, что EF проще. Вот такой LINQ Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
нарисовал такой sql и секономил мне несколколько седых волос на попе. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2018, 23:13 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
Не обошлось и без магии компиляйтора Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2018, 23:22 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
На SQL это в строк двадцать можно выразить и без подзапросов. Выполняться будет на порядок быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2018, 08:07 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
Relic Hunter, колонка Comments случаем не NVARCHAR (MAX)? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2018, 08:11 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
skyANA, На SQL это в строк двадцать можно выразить и без подзапросов. ----- И выполнятся оно будет и на мелкомягком, и на оркале, и на постгрее... И будет работать даже когда типы поменяются... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2018, 12:19 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
skyANAНа SQL это в строк двадцать можно выразить и без подзапросов. Выполняться будет на порядок быстрее. Конечно на порядок быстрее не будет. Быстрее будет только если написать совсем _другой_ запрос. А не тот же самый, но по-другому. И конечно надо правильно писать и читать LINQ, чтобы понимать, какой запрос на это сгенерируется. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2018, 15:38 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
hVosttБыстрее будет только если написать совсем _другой_ запрос. А не тот же самый, но по-другому. Что значит тот же самый? Возвращающий аналогичный результат? К примеру запрос со вложенными SELECT COUNT вернёт тоже самое, что и SELECT SUM(CASE, но при этом последний будет в разы короче и быстрее. Оконными функциями также можно всё короче и быстрее оформить. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2018, 16:36 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
skyANAЧто значит тот же самый? Возвращающий аналогичный результат? да, аналогичный результат при тех же вводных skyANAК примеру запрос со вложенными SELECT COUNT вернёт тоже самое, что и SELECT SUM(CASE, но при этом последний будет в разы короче и быстрее. Оконными функциями также можно всё короче и быстрее оформить. это предположение? наши опыты и тесты показывают, что оптимизатор БД в состоянии "страшный" запрос, генерируемый EF, выполнить также быстро, как SQL, написанный вручную. обычно это верно для 90% запросов. бывает, что EF генерит какую-то дичь, но это для сложных случаев, которые даже LINQ без пол бутылки не разобрать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 11:19 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
hVosttнаши опыты и тесты показывают, что оптимизатор БД в состоянии "страшный" запрос, генерируемый EF, выполнить также быстро, как SQL, написанный вручную. обычно это верно для 90% запросов. ИМХО Это запросы переводящиеся в SQL сменой синтаксиса. LINQ близок к SQL по синтаксису. Оставшиеся 10% - это то что один-в-один в select не трасформируется. Оптимизатор БД не переоценивай. В MS SQL он продвинутый, но не сильно. На сложных запросах может выбирать очень неоптимальные планы выполнения. PS Идеология "CodeFirst наше всё" ведет к тому что проблему оставшихся 10% решать будет некому. Данный топик пример этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 17:34 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
>hVostt, вчера, 11:19 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1306630&msg=21763808][21763808] >наши опыты и тесты показывают...также быстро, как SQL, написанный вручную...обычно это верно для 90% запросов. <давайте проверим на данном конкретном примере. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 00:04 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
ВМоисеев, Хотите вернутся к срачу linq или ОРМ? Поезд ушел. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 09:06 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
ВМоисеев, Не так) Linq (ORM) или SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 09:07 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
hVosttskyANAК примеру запрос со вложенными SELECT COUNT вернёт тоже самое, что и SELECT SUM(CASE, но при этом последний будет в разы короче и быстрее. Оконными функциями также можно всё короче и быстрее оформить. это предположение? Это опыт. Раз в год приходят ко мне с просьбой помочь ускорить запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 10:22 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
hVosttобычно это верно для 90% запросов. С этим не спорю. Речь конкретно про запрос в начале топика. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 10:25 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
ВМоисеев>hVostt, вчера, 11:19 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1306630&msg=21763808][21763808] >наши опыты и тесты показывают...также быстро, как SQL, написанный вручную...обычно это верно для 90% запросов. <давайте проверим на данном конкретном примере. Бекап базы у автора топика попросим что-ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 10:26 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
hVosttskyANAНа SQL это в строк двадцать можно выразить и без подзапросов. Выполняться будет на порядок быстрее. Конечно на порядок быстрее не будет. Быстрее будет только если написать совсем _другой_ запрос. А не тот же самый, но по-другому. И конечно надо правильно писать и читать LINQ, чтобы понимать, какой запрос на это сгенерируется. почему я тебя понял, а skyANA начал задавать "уточняющие" вопросы? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 10:46 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
Petro123ВМоисеев, Не так) Linq (ORM) или SQL. это вечный срач ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 10:48 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
skyANAВМоисеев>hVostt, вчера, 11:19 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1306630&msg=21763808][21763808] >наши опыты и тесты показывают...также быстро, как SQL, написанный вручную...обычно это верно для 90% запросов. <давайте проверим на данном конкретном примере. Бекап базы у автора топика попросим что-ли? будешь оптимизировать его запросы? тебе делать нечего, всего достиг? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 10:49 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
love_bachPetro123ВМоисеев, Не так) Linq (ORM) или SQL. это вечный срач))) В Java года три уже как прошёл)) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 11:28 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 10:26 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1306630&msg=21764657][21764657] >Бекап базы у автора топика попросим что-ли? <Вы что-то говорили про 20 строк - так предъявите их автору топика. Он проверит, получит цифирки сравнения и никакого срача. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 12:31 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 10:26 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1306630&msg=21764657][21764657] >Бекап базы у автора топика попросим что-ли? <Вы что-то говорили про 20 строк - так предъявите их автору топика. Он проверит, получит цифирки сравнения и никакого срача. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 12:32 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
>skyANA, сегодня, 10:26 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1306630&msg=21764657][21764657] >Бекап базы у автора топика попросим что-ли? <Вы что-то говорили про 20 строк - так предъявите их автору топика. Он проверит, получит цифирки сравнения и никакого срача. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 12:36 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
ВМоисеев>skyANA, сегодня, 10:26 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1306630&msg=21764657][21764657] >Бекап базы у автора топика попросим что-ли? <Вы что-то говорили про 20 строк - так предъявите их автору топика. Он проверит, получит цифирки сравнения и никакого срача. А я думал Вы сами хотите проверить. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 12:38 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
ВМоисеев, автор топика не удосужился ответить на вопрос о типа колонки Comments, ему походу топик совсем не интересен ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 12:39 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
Дмитрий МухВМоисеев, автор топика не удосужился ответить на вопрос о типа колонки Comments, ему походу топик совсем не интересен ну, допустим, varchar(MAX). возможно, извлекает только по Id. возможно в какой-то журнал извлекает записи, где это поле только первые надцать символов. что дальше? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 13:00 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
love_bachДмитрий МухВМоисеев, автор топика не удосужился ответить на вопрос о типа колонки Comments, ему походу топик совсем не интересен ну, допустим, varchar(MAX). возможно, извлекает только по Id. возможно в какой-то журнал извлекает записи, где это поле только первые надцать символов. что дальше? А то, что надо значть особенности хранения NVARCHAR(MAX) и как это негативно складывается на производительности выборки, когда нужно не одну запись по Id получить, а множество, да ещё и с группировкой как у ТС. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 13:21 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
Поправлюсь: как негативно это может сложится на производительности выборки. Я же не знаю какие там у ТС объёмы. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 13:25 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
Dima TОптимизатор БД не переоценивай. В MS SQL он продвинутый, но не сильно. На сложных запросах может выбирать очень неоптимальные планы выполнения. Неоптимальный план выполнения будет только при изначально неправильно составленном запросе. SQL гибок, так, что одно и то же, можно получить большим количеством запросов. Есть много сахара, позволяющего сократить запрос, поэтому многим кажется, чем короче выглядит запрос (особенно с применением сахара), тем он быстрее. Это не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 23:38 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
hVosttбольшим количеством запросов. *способов ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 23:38 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
hVosttDima TОптимизатор БД не переоценивай. В MS SQL он продвинутый, но не сильно. На сложных запросах может выбирать очень неоптимальные планы выполнения. Неоптимальный план выполнения будет только при изначально неправильно составленном запросе. А что значит неправильно? Получившийся в начале топика запрос он как составлен? Ну и сильное конечно утверждение: "только при изначально неправильно составленном запросе" ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 10:51 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
hVosttЕсть много сахара, позволяющего сократить запрос Например? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 10:53 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
Дмитрий МухА что значит неправильно? Получившийся в начале топика запрос он как составлен? Ну и сильное конечно утверждение: "только при изначально неправильно составленном запросе" Это нормальное утверждение. Посмотри на LINQ запрос в начале топика с точки зрения коллекции объектов. Посмотри на получившийся запрос в SQL. Сделано ровно то, что было запрошено в LINQ. Если запрос LINQ собирается динамически, то гарантировано всё будет правильно работать. Ты начинаешь смотреть на задачу иначе с точки зрения объединения запросов или оконных функций, будучи уверенным, что это действительно _на порядки_ будет быстрее. С чего вдруг-то? Неправильно составленный запрос, это который также неоптимален, или неверен и в LINQ. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 15:54 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
Дмитрий МухhVosttЕсть много сахара, позволяющего сократить запрос Например? with, расширяющие функции, раширенные функции и операторы для группировки, оконные функции, дофига всего. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 15:55 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
hVosttДмитрий Мухпропущено... Например? with, расширяющие функции, раширенные функции и операторы для группировки, оконные функции, дофига всего. И почему же это сахар? К примеру в курсе как работают оконные функции под капотом? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 16:04 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
Дмитрий МухИ почему же это сахар? К примеру в курсе как работают оконные функции под капотом? В курсе, не во всех случаях конечно. Скажи ещё, не знаешь, как, например, пронумеровать записи без оконных функций? )) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 17:21 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
hVosttДмитрий МухИ почему же это сахар? К примеру в курсе как работают оконные функции под капотом? В курсе, не во всех случаях конечно. Скажи ещё, не знаешь, как, например, пронумеровать записи без оконных функций? )) Я знаю как переписать запрос в стартовом посте не в четыре этажа, а в один, гораздо короче и без оконных функций. И про меньше или равно и COUNT я тоже знаю ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 17:50 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
Дмитрий МухЯ знаю как переписать запрос в стартовом посте не в четыре этажа, а в один, гораздо короче и без оконных функций. Да, но это будет другой запрос. Даже если он будет возвращать аналогичные результаты. Просто прочитай, что задекларировано в LINQ. А если вот эти Count-ы, будут использовать динамические LINQ выражения, или вообще всё строится на спецификациях? Не всё так просто, как может показаться в лоб. Да и в LINQ можно переписать запрос, вот эта задача выглядит по-интереснее. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 22:43 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
Или нам не нужны Count-ы в результатах, а как условие для сортировки или фильтрации, м? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 22:44 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
hVosttDima TОптимизатор БД не переоценивай. В MS SQL он продвинутый, но не сильно. На сложных запросах может выбирать очень неоптимальные планы выполнения. Неоптимальный план выполнения будет только при изначально неправильно составленном запросе. Неоднократно сталкивался с тормозами MSSQL в запросах с подзапросами Код: sql 1.
Оптимизатор почему-то строил нездоровый план. В итоге лечил временными таблицами Код: sql 1. 2.
БД большая, некоторые запросы ускорялись в 10 и более раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 07:29 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
Dima TОптимизатор почему-то строил нездоровый план. Вот первых учесть все правила построения оптимального плана любого запроса - это не реально. А во вторых оптимизатор ограничен по времени. Из того, что успел построить, выбрал более подходящий. Никакой магии. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 08:36 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
hVosttИли нам не нужны Count-ы в результатах, а как условие для сортировки или фильтрации, м? Перечитай первое сообщение в топике ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 08:38 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
Dima ThVosttпропущено... Неоптимальный план выполнения будет только при изначально неправильно составленном запросе. Неоднократно сталкивался с тормозами MSSQL в запросах с подзапросами Код: sql 1.
Оптимизатор почему-то строил нездоровый план. В итоге лечил временными таблицами Код: sql 1. 2.
БД большая, некоторые запросы ускорялись в 10 и более раз.темка обсуждения бага сиквела в ветке админов бд есть? Т.к.лечится временными это жестоко) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 09:03 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
hVosttДмитрий МухЯ знаю как переписать запрос в стартовом посте не в четыре этажа, а в один, гораздо короче и без оконных функций. Да, но это будет другой запрос. Даже если он будет возвращать аналогичные результаты. love_bachпочему я тебя понял, а skyANA начал задавать "уточняющие" вопросы? Потому, что skyANA, с**а, знал, что так будет. hVosttskyANAЧто значит тот же самый? Возвращающий аналогичный результат? да, аналогичный результат при тех же вводных ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 09:43 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
hVosttПросто прочитай, что задекларировано в LINQ. А если вот эти Count-ы, будут использовать динамические LINQ выражения, или вообще всё строится на спецификациях? Не всё так просто, как может показаться в лоб. "Трудно найти в тёмной комнате чёрную кошку... особенно, если её там нет!" ТС не знал, как написать на SQL то, что ему надо, и написал на LINQ. Посмотрел сгенерированный текст запроса и понял, что сам бы он скорее поседел, чем додумался до решения на SQL. Вынес это "достижение" на форум и спалился. Какие динамические выражения? Какие спецификации? Я тебя умоляю ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 09:49 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
skyANAhVosttИли нам не нужны Count-ы в результатах, а как условие для сортировки или фильтрации, м? Перечитай первое сообщение в топике Ну я немного шире гляжу на задачу. Понятно, что если чисто в конкретные данные упираться, то да, там типа запрос компактный можно написать, но как это сделать в рамках EF? Не было сказано. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 12:05 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
Дмитрий МухТС не знал, как написать на SQL то, что ему надо, и написал на LINQ. Посмотрел сгенерированный текст запроса и понял, что сам бы он скорее поседел, чем додумался до решения на SQL. Вынес это "достижение" на форум и спалился. Какие динамические выражения? Какие спецификации? Я тебя умоляю Ну это не интерсно. На SQL может любой, а как насчёт в EF? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 12:07 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
hVosttДмитрий МухТС не знал, как написать на SQL то, что ему надо, и написал на LINQ. Посмотрел сгенерированный текст запроса и понял, что сам бы он скорее поседел, чем додумался до решения на SQL. Вынес это "достижение" на форум и спалился. Какие динамические выражения? Какие спецификации? Я тебя умоляю Ну это не интерсно. На SQL может любой, а как насчёт в EF? Для начала .Sum() вместо .Count() попробовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 12:48 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
skyANAДля начала .Sum() вместо .Count() попробовать? Ну да, а ещё в LINQ можно несколько запросов с одним джойнить, проблема только с outer join. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 13:31 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
Relic Hunter, Linq определённо крут, если вы понимаете, что будет на выходе и умеете дизайнить базу данных. Потому что в неумелых ручках потом нехилая лажа может возникнуть. А длинный запрос очень часто бывает более производительным, но не факт, что это относится к данному примеру. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 13:50 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
Может вы господа сначала документацию почитаете, прежде чем вываливать на форум всякую бредятину? А то у одного оптимизатор хватает первый план который успел построить за заданное время, у второго проблемы с outer join'ом... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 14:00 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
LessypМожет вы господа сначала документацию почитаете, прежде чем вываливать на форум всякую бредятину? А то у одного оптимизатор хватает первый план который успел построить за заданное время, у второго проблемы с outer join'ом... если по сути сказать не способен, вовсе не обязательно тут строить из себя дАртаньяна и позориться. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 14:04 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
А я пока дам свою: What Is Optimizer Timeout?SQL Server uses a cost-based query optimizer. Therefore, it selects a query plan with the lowest cost after it has built and examined multiple query plans. One of the objectives of the SQL Server query optimizer (QO) is to spend a "reasonable time" in query optimization as compared to query execution. Therefore, QO has a built-in threshold of tasks to consider before it stops the optimization process. If this threshold is reached before QO has considered most, if not all, possible plans then it has reached the Optimizer TimeOut limit. An event is reported in the query plan as Time Out under "Reason For Early Termination of Statement Optimization." It's important to understand that this threshold isn't based on clock time but on number of possibilities considered. In current SQL QO versions, over a half million possibilities are considered before a time out is reached. Optimizer timeout is designed in Microsoft SQL Server and in many cases encountering it is not a factor affecting query performance. However, in some cases the SQL query plan choice may be affected by optimizer timeout and thus performance could be impacted. When you encounter such issues, if you understand optimizer timeout mechanism and how complex queries can be affected in SQL Server, it can help you to better troubleshoot and improve your performance issue. Understanding Optimizer Timeout and how Complex queries can be Affected in SQL Server ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 14:57 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
skyANAА во вторых оптимизатор ограничен по времени. Из того, что успел построить, выбрал более подходящий. да не ограничен он ни по какому времени, он ограничен по количеству планов т.к. их миллиард может быть при множестве джойнов. И само значение этого ограничения не жесткое, а зависит от некоторых артефактов, полученных на предыдущих шагах Timeout слово неудачное выбрали, хотя для тех, кто дальше linq не понимает - сойдет ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 09:08 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
skyANALessypМожет вы господа сначала документацию почитаете О чём ты? Давай ссылку, фигли Нет уж, изволь почитать документацию! Какие ещё ссылки? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 18:40 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
КнюпельskyANAА во вторых оптимизатор ограничен по времени. Из того, что успел построить, выбрал более подходящий. да не ограничен он ни по какому времени, он ограничен по количеству планов т.к. их миллиард может быть при множестве джойнов. И само значение этого ограничения не жесткое, а зависит от некоторых артефактов, полученных на предыдущих шагах Timeout слово неудачное выбрали, хотя для тех, кто дальше linq не понимает - сойдет Таки дайте ссылку, где вместо reasonable time написано про count. Буду признателен. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 22:28 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
But I see an Optimizer Timeout with a simpler query? Nothing with QO is simple (black and white). There are so many possible scenarios, its complexity so high that it is hard to grasp all of the possibilities. The Query Optimizer may dynamically adjust/set timeout threshold based on the cost of the plan found at a certain stage. For example, if a plan that appears relatively "cheap" is found, then the task limit to search for a better plan may be reduced. Therefore, grossly underestimated cardinality estimation may be one example for hitting an optimizer timeout early. In this case, the focus of investigation is cardinality estimation. This is a rarer case than the scenario that's discussed previously about running a complex query, but it is possible. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2018, 08:17 |
|
LINQ - проще
|
|||
---|---|---|---|
#18+
Dima TНеоднократно сталкивался с тормозами MSSQL в запросах с подзапросами Код: sql 1.
Оптимизатор почему-то строил нездоровый план. В итоге лечил временными таблицами Код: sql 1. 2.
БД большая, некоторые запросы ускорялись в 10 и более раз. И про это там тоже есть :) Re-write the query: Consider breaking up the single multi-table query into multiple queries by using temporary tables. However, you shouldn't always do this, breaking up the query is just one of the ways to simplify the task for the optimizer. See the following sample: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
To optimize, try to break down into two queries: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2018, 10:06 |
|
|
start [/forum/topic.php?all=1&fid=17&tid=1349144]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
153ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
others: | 239ms |
total: | 533ms |
0 / 0 |