|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Коллеги, Начинаю только осваивать LINQ Пока складывается впечатление, что, грубо говоря, то, что можно на той или иной реализации SQL реализовать в одном запросе, поворачивая данные как тебе угодно, средствами LINQ - так же в одном запросе - реализовать практически невозможно. Либо это будет уже не запрос, а какой-то научный трактат... и тормозить будет безбожно. Дальше, наблюдая практику обращения с LINQ, дата контекстами, отдельными сущностями и т.п. в существующем проекте, с которым сейчас разбираюсь постепенно прихожу к выводу, что стиль работы с LINQ сводится к выборке малыми простыми запросами отдельных частей данных с последующими пошаговыми манипуляциями с ними. Например, реализовать в одном запросе сложный join (особенно если left) с кучей условий по каждому join - обреченная на провал идея. Так какие же подходы примеными на практике? Поправьте, если неправ ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 01:26 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
sheich, Вкратце: LINQ имеет все те же возможности, что и SQL, плюс let и ассоциации, которых в SQL нет. left join в LINQ неудобен, но на практике стараются пользоваться ассоциациями, самому описывать join приходится редко. Выводы делай сам. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 04:28 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
sheichТак какие же подходы примеными на практике? Поправьте, если неправ Для начала необходимо понять, что LINQ это не альтернатива SQL, никогда ей не была, и вовсе не задумывалось таковой. Поэтому сравнивать SQL vs LINQ — вообще не корректно, в принципе. Это как сравнивать пилу с молотком. Поэтому составлять впечатления о LINQ через призму SQL — не правильно. Да, LINQ может транслироваться в SQL. Но суть у них разная. SQL оперирует таблицами, а LINQ коллекциями. У таблицы не может быть поля-коллекции, а у LINQ может. У SQL не может быть поля-записи-из-другой-таблицы, а у LINQ может. Обычно, если данные хорошо нормализованы и укладываются в объектную модель приложения, то запросы на LINQ писать гораздо легче, они понятнее, логичнее и проще, чем аналог на SQL. С другой стороны на SQL можно написать ТАКОЕ, что в LINQ сделать почти не реально... вот только надо понимать, такие запросы изначально нафиг не нужны были в LINQ, а если пристально присмотреться, то скорее всего необходимость таких адских запросов — это большой косяк в разработке. Но то такое... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 07:58 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVosttПоэтому составлять впечатления о LINQ через призму SQL — не правильно.Правильно, если планируем применять LINQ для генерации SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 09:17 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей КПравильно, если планируем применять LINQ для генерации SQL. Так почему бы тогда сразу не писать SQL? Правильная постановка задачи -- уже пол решения, у тебя постановка неправильная, поэтому и выводы в корне неправильные. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 10:00 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVosttАлексей КПравильно, если планируем применять LINQ для генерации SQL. Так почему бы тогда сразу не писать SQL? Правильная постановка задачи -- уже пол решения, у тебя постановка неправильная, поэтому и выводы в корне неправильные. Ну, например, потому, что SQL-запросы писать в коде на C# бывает менее удобно и производительно, чем на LINQ. Хотя дело вкуса, конечно. Я вот и SQL-ем и LINQ-ом пользуюсь. Причем SQL-ем чаще, но только потому, что знаю его лучше, чем LINQ. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 10:27 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
stomskyНу, например, потому, что SQL-запросы писать в коде на C# бывает менее удобно и производительно, чем на LINQ. Хотя дело вкуса, конечно. Я вот и SQL-ем и LINQ-ом пользуюсь. Причем SQL-ем чаще, но только потому, что знаю его лучше, чем LINQ. Я вообще не пользуюсь SQL-ем, кроме крайне специфичных случаев. Не потому что LINQ мне кажется более выразительным, чем SQL. А потому, что на LINQ решаются задачи, специфичные для LINQ, а именно — извлечение данных объектов. На практике выяснилось: то, что раньше решалось сложными SQL с листингом не несколько страниц, проще решается избыточным хранением данных в нужном виде. Например, SQL-style: десятки JOIN-ов (INNER, LEFT/RIGHT, OUTER) с массой EXISTS/WHERE подвыборками, группировоками, и тому прочее. LINQ-style: ведение параллельно в БД отдельной плоской структуры всех необходимых данных, к которой осуществляется простой доступ как к коллекции. Да, избыточно. Да, слегка снижается скорость прямой записи/изменений (это если не делать отложенную очередь). Но, крайне эффективные молниеносные выборки, быстрее, чем SQL-style, местами на порядки. Очень понятно для сопровождения, поддаётся контролю и полному тестированию. Не зависит от природы СУБД. Промежуточный способ: сделать SQL-View и отразить её, как таблицу. Удобно для тех, кто способен понимать только SQL-style, удобно, когда задачу надо решить экстремально быстро и плевать на последствия. Неудобно для сопровождения, практически не тестируется модульно, грозит большим увесистым долгом. Сложно транслировать решение на другую СУБД или вообще на NoSQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 11:15 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
SQL - вообще трешак, как можно серьезно воспринимать запросы на >35 страниц? Как их дебажить? LINQ - наше всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 11:23 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVostt, возможно) пока не очень знаком с linq но пока впечатление такое, что предлагается как раз отложить в сторону пилу и все делать только молотком а пила то и была заточена именно под обработку реляционных данных и прекрасно с этим справляется и много лет оттачивалась и совершенствовалась. кроме того sql - он внутри субд, там, на месте все запрашивает и знает, как и чего. linq же как и любые другие запросы извне, со стороны приложения все-таки дергает раз за разом базу снаружи и это само по себе извращение, имхо я всегда шел по пути кесарю-кесарево: sql - для таблиц в бд, c#/java etc. - для приложения, коммуникации, сервисов, javascript/css - для интерфейса. не мешаем мухи и котлеты а тут... при работе с linq все перемешано.. бд используется просто как помойка с простыми таблицами, а приложение гоняет данные и запросы туда сюда, "думая", что имеет дело с местными данными идея сама по себе странная но подход у нынешнего работодателя такой( все таки, каждая часть системы должна заниматься своей работой. и за субд обидно )) ладно еще, если в целях хранилища используется mysql, там или еще чего. но когда mssql или oracle превращают в простые свалки... это как микроскопом солить огурцы ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 11:59 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiqueSQL - вообще трешак, как можно серьезно воспринимать запросы на >35 страниц? Как их дебажить? Все зависит от уровня подготовки. Есть люди которые запросто работают с хп, в которых только объявление временных таблиц занимает >35 страниц. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 12:25 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVosttПромежуточный способ: сделать SQL-View и отразить её, как таблицу. или прямо на sql-запрос отмапить DTO. SQL-View / sql-запрос на мой взгляд самый разумный компромисс. hVosttУдобно для тех, кто способен понимать только SQL-style, удобно, когда задачу надо решить экстремально быстро и плевать на последствия . Неудобно для сопровождения, практически не тестируется модульно, грозит большим увесистым долгом . сильно категорично. часто запросы для DTO реально сложные (всякие аналитические функции и пр.) и заточены на обработку именно "реляционного отношения", а не "списка объектов". к тому же обратное отображение O->R для них не надо. hVosttСложно транслировать решение на другую СУБД или вообще на NoSQL. или вообще на Java под Linux ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 12:26 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVosttТак почему бы тогда сразу не писать SQL? Правильная постановка задачи -- уже пол решения, у тебя постановка неправильная, поэтому и выводы в корне неправильные. просто таков подход компании. никто не хочет связываться с sql hVosttСложно транслировать решение на другую СУБД или вообще на NoSQL. самое смешное в том, что, вот, часто по поводу той или иной "платформонезависимой" (субд-независимой) технологии ее сторонники кричат и упирают на это ее преимущество - абстрагированность от операционной системы, уровня данных бла-бла. но на практике разве часто встречаются компании, которые бы регулярно меняли платформу? по моему опыту-нет. если уж компания подсела на windows, ms exchange, mssql или oracle, linux, то уж не слезет с проверенной технологии. кому нужны такие риски? кому нужно новых специалистов искать, растить? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 12:48 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
sheichя всегда шел по пути кесарю-кесарево: sql - для таблиц в бд sheichа тут... при работе с linq все перемешано.. бд используется просто как помойка с простыми таблицами, а приложение гоняет данные и запросы туда сюда, "думая", что имеет дело с местными данными идея сама по себе странная А ничего и не поменялось. SQL — это средство для работы с СУБД. Если говорить о БД, то «помойка с простыми таблицами» это и есть самая суть БД. Да, именно. Хранилище данных. Чем проще — тем лучше. Или вы не получите удовлетворения от результата работы, если все слишком просто? Надо обязательно усложнить! Триггеры! Табличные процедуры! ))))) В LINQ ничего не перемешано, это уровень абстракции. Правильно было бы провести такую аналогию: asm → C/C++ (реализация языка написана на ассемблере) SQL → LINQ (данные из БД LINQ достаёт посредством SQL) Никто же сейчас не нудит, дескать, чего это никто на ассемблере не кодит, все на языки высокого уровня перешли. Даже грустно как-то sheichно подход у нынешнего работодателя такой( При чём тут работодатель? Обойдите свой вопрос с другой стороны и посмотрите с другой точки зрения. Ведь даже памятник Пушкину с определённой стороны это всего лишь каменная жопа sheichи за субд обидно )) ладно еще, если в целях хранилища используется mysql, там или еще чего. но когда mssql или oracle превращают в простые свалки... это как микроскопом солить огурцы Если хочется делать упор на SQL, ищите работу, где потребуется много работы непосредственно с базой данных. Таких компаний достаточно много, предложений достаточно, да и задачи соответствующие, где это может быть актуально — есть. Кесарю — кесарево. Сами сказали. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 13:06 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Перегонщик перекупкисильно категорично. часто запросы для DTO реально сложные (всякие аналитические функции и пр.) и заточены на обработку именно "реляционного отношения", а не "списка объектов". к тому же обратное отображение O->R для них не надо. И в 90% если сесть и хорошенько подумать, то задача удивительным образом декомпозируется и теряет свою «реляционную» привязанность. Зачастую, я уже неоднократно с этим сталкивался, проблема кроется в «реляционном» мышлении. Когда человек автоматически любые данные старается сразу разложить по таблицам и организовать между ними связи. С одной стороны круто, но с другой — тупик. Надо мыслить шире, реляционная модель крутая, но одна всего лишь одна из, и не панацея. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 13:10 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
ЕвгенийВВсе зависит от уровня подготовки. Что делает этот запрос? Написано человеком. Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 14:00 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiqueЕвгенийВВсе зависит от уровня подготовки. Что делает этот запрос? Написано человеком. Код: sql 1.
В блокноте, кстати. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 14:02 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Monochromatique, Это сложный sql запрос? из фио выбрать ФАМИЛИЮ, Фамилия ........ ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 14:51 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Monochromatique В блокноте, кстати. Преобразует имя юзверя к божескому виду. 1. за такой код, без отступов и комментариев надо молотком один раз по пальцам и два раза по башке. 2. к РСУБД он имеет весьма опосредственное отношение ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 15:01 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiqueВ блокноте, кстати. блокнот не самое удобное средство для написания sql, можно и верх ногами писать ... на заборе ..... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 15:09 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiqueЧто делает этот запрос? Написано человеком. В блокноте, кстати. не показательный пример запрос не производит сложной выборки данных, а занимается уже обработкой представления данных а это, имхо, уже задача не SQL как раз ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 15:28 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
ЕвгенийВПреобразует имя юзверя к божескому виду. Ну, с такой трактовкой, в LINQ это выглядело бы так - Код: c# 1.
Без отступов и комментариев. Так что LINQ всё равно впереди. Распелись - запрос в три строчки - никто не может ЧЕТКО сказать, что он делает. Вот вам и "падгатовка", отступы с комментариями. )))) ЕвгенийВ2. к РСУБД он имеет весьма опосредственное отношение Угу. А 50 страниц черного текста ЗУП-овского треша имеют? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 15:41 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
garbushkaMonochromatique, Это сложный sql запрос? Не знаю. Но от тебя я отчета не увидел. Твое сообщение мне дешифровать не удалось. ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 15:42 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiquegarbushkaMonochromatique, Это сложный sql запрос? Не знаю. Но от тебя я отчета не увидел. Твое сообщение мне дешифровать не удалось. ))) Извини, ответа не увидел. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 15:43 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiqueНу, с такой трактовкой, в LINQ это выглядело бы так - Код: c# 1.
а в SQL так Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 16:02 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
sheichMonochromatiqueЧто делает этот запрос? Написано человеком. В блокноте, кстати. не показательный пример запрос не производит сложной выборки данных, а занимается уже обработкой представления данных а это, имхо, уже задача не SQL как раз в целом, да. но иногда, особенно, когда это представление зависит не только от текущей записи, а еще от других, лучше, все же, SQL (конечно, если это полноценная СУБД, типа ORACLE или SQL SERVER) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 17:57 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVosttИ в 90% если сесть и хорошенько подумать, то задача удивительным образом декомпозируется и теряет свою «реляционную» привязанность . Зачастую, я уже неоднократно с этим сталкивался, проблема кроется в «реляционном» мышлении Объектное "мышление" 1. get(id) 2. save(entity) 3. delete(id/entity) "Реляционное" 4. (камень преткновения) - getList разница м/ду 1,2,3 и 4 - очевидна: "объект" vs "отношение". в простых случаях можно сделать равно между "список объектов" и "отношение". но это как "линейное уравнение частный случай не линейного". ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 18:10 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVosttLINQ-style: ведение параллельно в БД отдельной плоской структуры всех необходимых данных, к которой осуществляется простой доступ как к коллекции. Да, избыточно. Да, слегка снижается скорость прямой записи/изменений (это если не делать отложенную очередь). Но, крайне эффективные молниеносные выборки, быстрее, чем SQL-style, местами на порядки. Очень понятно для сопровождения, поддаётся контролю и полному тестированию. Не зависит от природы СУБД. БД - она, как правило уже есть, и она - не в зоне разработчика. и она может быть древним говном мамонта. и приложения должны уметь с ним работать, и умеют они с ними работать. а вот то, как ты предлагаешь надругаться над БД... наверное деньги тебя ослепили ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 18:19 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiqueЕвгенийВВсе зависит от уровня подготовки. Что делает этот запрос? Написано человеком. Код: sql 1.
ИМХУ Этот запрос занимается изнасилованием сервера. Сервер БД должен хранить, читать и писать с поддержанием целостности БД. Всё. Что-то считать он не должен (как тут какой-то парсинг строк), т.к. это делается в ущерб всем остальным юзерам, использующим БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 19:01 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
sheichа тут... при работе с linq все перемешано.. бд используется просто как помойка с простыми таблицами, а приложение гоняет данные и запросы туда сюда, "думая", что имеет дело с местными данными идея сама по себе странная но подход у нынешнего работодателя такой( все таки, каждая часть системы должна заниматься своей работой. и за субд обидно )) ладно еще, если в целях хранилища используется mysql, там или еще чего. но когда mssql или oracle превращают в простые свалки... это как микроскопом солить огурцы Рано или поздно наступят на грабли потери производительности. БД это узкое место любой централизованной системы, начнет тупить из-за блокировок и хоть запокупайся новых железяк, не параллелятся блокировки в БД, все-равно будет висеть и тормозить. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 19:12 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TMonochromatiqueпропущено... Что делает этот запрос? Написано человеком. Код: sql 1.
ИМХУ Этот запрос занимается изнасилованием сервера. Сервер БД должен хранить, читать и писать с поддержанием целостности БД. Всё. Что-то считать он не должен (как тут какой-то парсинг строк), т.к. это делается в ущерб всем остальным юзерам, использующим БД. ничего смертельного с сервером не произойдет. если вдруг затупит на этом месте, тут другая будет причина, но не строковые ф-ии ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 19:15 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
fsharp_fsharpsheichпропущено... не показательный пример запрос не производит сложной выборки данных, а занимается уже обработкой представления данных а это, имхо, уже задача не SQL как раз в целом, да. но иногда, особенно, когда это представление зависит не только от текущей записи, а еще от других, лучше, все же, SQL (конечно, если это полноценная СУБД, типа ORACLE или SQL SERVER)В LINQ так же есть вложенные запросы, которые прекрасно транслируются во вложенные запросы SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2016, 04:15 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVosttАлексей КПравильно, если планируем применять LINQ для генерации SQL. Так почему бы тогда сразу не писать SQL?Потому что запросы писать на LINQ удобнее, модифицировать такой код удобнее. hVosttПравильная постановка задачи -- уже пол решения, у тебя постановка неправильная, поэтому и выводы в корне неправильные.Какая моя постановка задачи неправильная? Ты о чём? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2016, 04:18 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Если я пишу запрос на SQL я всегда могу использовать все преимущества индексирования, расширенных возможностей T-SQL или PL/SQL и добиться максимальной скорости / адекватности запроса. Если LINQ "за меня" сама генерит SQL, то одному Богу известно, какие именно запросы она строчит и шлет в БД... Вот в чем засада. В отстствии контроля. Это - черный ящик. Я тут случайно вместо того, что бы запринтовать в лог значения полей коллекции вывел SQL-запросы, которые генерит LINQ для получения поля этой коллекции и ужаснулся... И понял, почему LINQ так тормозит. Вобщем, я не вижу какого-то адекватного, простого использования LINQ в случае работы с большими массивами данных в БД. ОК, она пишет за меня SQL и вытянуте данные переводит во временные (в памяти) коллекции. Потом, видимо я должен оперировать уже коллекциями. Но они же, вот, не могут быть проиндексированы, например, в отличие от таблиц?... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2016, 14:17 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
sheichНо они же, вот, не могут быть проиндексированы, например, в отличие от таблиц?... Коллекции бывают разными ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2016, 22:37 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
sheich... и ужаснулся... И понял, почему LINQ так тормозит.... и возрадовался дух Мой о Боге Спасителе Моем. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 04:36 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
sheichЕсли я пишу запрос на SQL я всегда могу использовать все преимущества индексирования, расширенных возможностей T-SQL или PL/SQL и добиться максимальной скорости Дыма без огня не бывает. Если тебе приходится писать такие зубодробительные запросы, значит изначально БД была спроектирована через одно место. Значит поддержка этого УГэ будет стоить бешенных денег, сил и тонны нервов разработчиков, особенно тех, кто придёт на проект позже. Значит любое изменение с структуре БД это поход пешим шагом по минному полю. Я могу добиться максимальной скорости — такой подход уместен на гонках, где за долю выигранных микросекунд можно отхватить увесистую медаль. Но в реальных приложениях в реальном мире решает совершенно другое. Простота, понятность, сопровождаемость, тестируемость. Это всё часто идёт вразрез с «расширенными возможностями T-SQL/PL-SQL». Но если очень хочется — никто не запрещает. Есть ряд задач, ориентированных на обработку данных. Но их меньшинство. И обычно их можно выделить и инкапсулировать от остального комплекса. Там уместно применение расширенного SQL, но там LINQ точно нафиг не сдался. sheichЯ тут случайно вместо того, что бы запринтовать в лог значения полей коллекции вывел SQL-запросы, которые генерит LINQ для получения поля этой коллекции и ужаснулся... И понял, почему LINQ так тормозит. Есть несколько причин, почему тормозит LINQ: 1. Кривая структура БД, изначально не подходящая для задач, решаемых LINQ 2. Запрос LINQ составлен так, как он был бы составлен в SQL, тогда как LINQ не предназначен собирать данные из таблиц, ему суждено оперировать коллекциями и объектами, которые друг с другом изначально связаны (а через JOIN как в SQL) 3. SELECT N+1 Есть у нас проекты, где используются исключительно LINQ, огромные БД с наличием таблиц, содержащих миллионы и миллиарды записей. Ничего не тормозит. Все запросы в БД эффективные, если некоторые и можно было бы улучшить, применив джедайство SQL, это в общей картине не изменит ничего. sheichВобщем, я не вижу какого-то адекватного, простого использования LINQ в случае работы с большими массивами данных в БД. Всё зависит от изначальной задачи. Если массив данных это коллекция объектов, проблемы нет. А если это просто какой-то набор таблиц, спроектированный через одно место, и чтобы получить какие-то данные, надо выкатить листинг SQL на пару страниц, то это уже совершенно к другому врачу Если задача — пережевывать огромную кучу данных, где нет целостных объектов, а просто какие-то данные, разбросанных по таблицам без общего соблюдения принципов нормализации, то конечно, тут нафиг LINQ не упёрся. sheichОК, она пишет за меня SQL и вытянуте данные переводит во временные (в памяти) коллекции. Потом, видимо я должен оперировать уже коллекциями. Но они же, вот, не могут быть проиндексированы, например, в отличие от таблиц?... Странный вопрос. Зачем их индексировать в памяти? Какая изначальная задача? Сравнивать LINQ vs SQL — уже по сути неправильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 07:06 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей КПотому что запросы писать на LINQ удобнее, модифицировать такой код удобнее. Ты не напишешь на LINQ то, что можно написать на SQL, поэтому LINQ быть полной заменой SQL не может. Не неси чепуху. Алексей ККакая моя постановка задачи неправильная? Ты о чём? Вот такая: «Я пишу на LINQ, потому что на нём писать удобнее, чем на SQL, и модифицировать такой код удобнее». Бред безумца. Даже не буду эти детские наивные глупости комментировать. Вроде уже не джуниор, а такое выдаёшь. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 07:09 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVosttАлексей КПотому что запросы писать на LINQ удобнее, модифицировать такой код удобнее. Ты не напишешь на LINQ то, что можно написать на SQL, поэтому LINQ быть полной заменой SQL не может. Не неси чепуху.Ты не напишешь на SQL то, что можно написать на LINQ. И что? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 08:06 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVostt Зачем их индексировать в памяти? Для быстрой обработки данных. Зачем еще данные индексируют? Для красоты? hVosttКакая изначальная задача? Изначальная? Мир во всем мире. ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 08:23 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVosttАлексей КПотому что запросы писать на LINQ удобнее, модифицировать такой код удобнее. Ты не напишешь на LINQ то, что можно написать на SQL, поэтому LINQ быть полной заменой SQL не может. Не неси чепуху. Алексей ККакая моя постановка задачи неправильная? Ты о чём? Вот такая: «Я пишу на LINQ, потому что на нём писать удобнее, чем на SQL, и модифицировать такой код удобнее». Бред безумца. Даже не буду эти детские наивные глупости комментировать. Вроде уже не джуниор, а такое выдаёшь. Перегибаешь, хвост. И сравнить можно что угодно с чем угодно, хватало бы "фантазии". Нужно достать данные из БД - встает непростой выбор - а не пописать ли мне raw текст вставного SQL-запроса, или нажать несколько кнопок (linq) и данные уже в памяти. Что выбираем? Почему? Конечно linq и имеено из-за удобства\быстроты и прочего. Скажи нам - почему ТЫ выбираешь LINQ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 08:37 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Ну и не могу не заметить - порой то, что можно запросто сделат на LINQ - очень запарно делать на SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 08:47 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiqueНужно достать данные из БД - встает непростой выбор - а не пописать ли мне raw текст вставного SQL-запроса, или нажать несколько кнопок (linq) и данные уже в памяти. Что выбираем? Почему? Конечно linq и имеено из-за удобства\быстроты и прочего. Скажи нам - почему ТЫ выбираешь LINQ? И еще немаловажный момент - при рефакторинге структуры данных/объектной модели где проще найти зависимости - в строго типизированном коде LINQ или в текстах raw SQL? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 14:51 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiqueНужно достать данные из БД - встает непростой выбор - а не пописать ли мне raw текст вставного SQL-запроса, или нажать несколько кнопок (linq) и данные уже в памяти. Что выбираем? Почему? Конечно linq и имеено из-за удобства\быстроты и прочего. Конечно raw :) ИМХУ тут дело вкуса и цвета фломастеров. Лично мне SQL запросы проще писать, и отлаживать их проще в MMS, и тюнинговать проще. Как, например, посмотреть план выполнения linq-запроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 15:09 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TMonochromatiqueНужно достать данные из БД - встает непростой выбор - а не пописать ли мне raw текст вставного SQL-запроса, или нажать несколько кнопок (linq) и данные уже в памяти. Что выбираем? Почему? Конечно linq и имеено из-за удобства\быстроты и прочего. Конечно raw :) ИМХУ тут дело вкуса и цвета фломастеров. Лично мне SQL запросы проще писать, и отлаживать их проще в MMS, и тюнинговать проще. Как, например, посмотреть план выполнения linq-запроса? Зачем на него смотреть? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 15:37 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiqueDima Tпропущено... Конечно raw :) ИМХУ тут дело вкуса и цвета фломастеров. Лично мне SQL запросы проще писать, и отлаживать их проще в MMS, и тюнинговать проще. Как, например, посмотреть план выполнения linq-запроса? Зачем на него смотреть? Чтобы SQL-сервер не грузить ненужной работой и тормоза не создавать. Вот например 19666772 сравнивал, есть разница. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 15:46 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TMonochromatiqueпропущено... Зачем на него смотреть? Чтобы SQL-сервер не грузить ненужной работой и тормоза не создавать. Вот например 19666772 сравнивал, есть разница.Но в итоге-то всё закончилось замечательно, LINQ завоевал своё место под солнцем. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 15:49 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TMonochromatiqueпропущено... Зачем на него смотреть? Чтобы SQL-сервер не грузить ненужной работой и тормоза не создавать. Вот например 19666772 сравнивал, есть разница. Ммм.. Чем меньше возни со скулем - тем лучше. ИМХО, этому должно быть всё подчиненно. Касаемо юзеров, которые привязаны и к адресам и к группам и еще черте-к-чему - то стоит потратить (вложить ресурс) время на структуру данных, чем потом на изучение планов запроса и прочее. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 15:51 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей КDima Tпропущено... Чтобы SQL-сервер не грузить ненужной работой и тормоза не создавать. Вот например 19666772 сравнивал, есть разница.Но в итоге-то всё закончилось замечательно, LINQ завоевал своё место под солнцем. :-) Я и не против LINQ, всеми руками за LINQ to Object, тем более что все отлично стыкуется . ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 15:54 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiqueМмм.. Чем меньше возни со скулем - тем лучше. ИМХО, этому должно быть всё подчиненно. От возни никак ты не уйдешь. Те же индексы кто-то должен создать. Другой вопрос кто. Если это специально обученный DBA, это одно дело, а если ты сам себе DBA то в итоге тебе и возится. MonochromatiqueКасаемо юзеров, которые привязаны и к адресам и к группам и еще черте-к-чему - то стоит потратить (вложить ресурс) время на структуру данных, чем потом на изучение планов запроса и прочее. К сожалению не получится, структура подтянута из другой БД. В данном случае приходится жить с тем что есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 16:03 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Monochromatique Ммм.. Чем меньше возни со скулем - тем лучше. ИМХО, этому должно быть всё подчиненно. Как например через linq такое сделать? Код: sql 1. 2. 3.
Т.е. сказать, используй специально созданный для это джойна фильтрованный индекс, от чего время исполнения уменьшается как минимум в 10000 раз? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 16:43 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
ЕвгенийВMonochromatique Ммм.. Чем меньше возни со скулем - тем лучше. ИМХО, этому должно быть всё подчиненно. Как например через linq такое сделать? Код: sql 1. 2. 3.
Т.е. сказать, используй специально созданный для это джойна фильтрованный индекс, от чего время исполнения уменьшается как минимум в 10000 раз?Такое можно сделать через view. Но использовать хинты приходится редко, это обычно следствие каких-нибудь проблем, которые лучше устранить, чем бороться со следствием. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 16:58 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TТе же индексы кто-то должен создать. EF их сама создает. Нужны какие-то еще? Наверное, можно создать, но лично у меня такой нужды не было. Юзеров к адресам плохо привязывал наверное. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 17:03 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiqueEF их сама создает. Нужны какие-то еще? Наверное, можно создать, но лично у меня такой нужды не было. Что можно насоздавать на автомате? По полям с ID разве что, чтобы ассоциации не тормозили. Но на этом жизнь не заканчивается. Есть не ключевые поля (даты документов, номера и т.д.), которые часто в условие отбора попадают, сомневаюсь что EF такие индексы создает. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 17:52 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TMonochromatiqueEF их сама создает. Нужны какие-то еще? Наверное, можно создать, но лично у меня такой нужды не было. Что можно насоздавать на автомате? По полям с ID разве что, чтобы ассоциации не тормозили. Но на этом жизнь не заканчивается. Есть не ключевые поля (даты документов, номера и т.д.), которые часто в условие отбора попадают, сомневаюсь что EF такие индексы создает.В миграциях вручную можно создавать любые индексы. Тот же DDL, вид сбоку. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 17:58 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima T, Ну и вообще, никто не заставляет создавать БД с помощью EF. Как по мне, так методика code-first так себе. БД лучше создавать "обычными" средствами, потом по БД генерировать DbContext. Благо, при наличии T4 Text Template кодогенераторы пишутся за 5 минут. Да и готовых кодогенераторов хватает. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 18:04 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей КВ миграциях вручную можно создавать любые индексы. Тот же DDL, вид сбоку. Ключевое слово "вручную". Monochromatique ведь утверждает что EF настолько хорош что опускаться до особенностей работы SQL-сервера не надо, не надо заморачиваться что там за СУБД под твоей прогой, EF сам все порешает. А чтобы что-то сделать вручную - надо понимать что и для чего надо делать, т.е. знать особенности работы СУБД. offtopПисал уже эту байку, повторюсь: довелось мне сопровождать один сайт писаный на заказ, до меня работу приняли, по началу работало, а как стало выходить на рабочие объемы - стало жестко тупить. Полез во внутря - ни одного индекса !!! Создал - сайт ожил, залетал. Спросил разработчика (был доступен): "Как так?" Получил шикарный ответ: "MySQL настолько крут что индексы не нужны!" А тут слышу "EF настолько крут ..." ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 18:29 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TАлексей КВ миграциях вручную можно создавать любые индексы. Тот же DDL, вид сбоку. Ключевое слово "вручную".Ну а тут без вариантов. Чудес не бывает, только вручную. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 18:44 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
По теме топика: понимаю негодование ТС и понимаю откуда родилось требование LINQ наше всё. LINQ не дает стрелять в ногу, типизация не дает делать грубых ошибок, поэтому в одном большом проекте могут уживаться гуру и студенты, а на сегодня это важно, т.к. проекты большие, а гур мало и дорогие они. Тут вопрос больше в плоскости денег, что выходит за рамки данного форума, да и сайта тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 18:45 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TПо теме топика: понимаю негодование ТС и понимаю откуда родилось требование LINQ наше всё. LINQ не дает стрелять в ногу, типизация не дает делать грубых ошибок, поэтому в одном большом проекте могут уживаться гуру и студенты, а на сегодня это важно, т.к. проекты большие, а гур мало и дорогие они. Тут вопрос больше в плоскости денег, что выходит за рамки данного форума, да и сайта тоже.Наоборот. Наплодить рукописного SQL много ума не надо, это все умеют. Наладить разработку типизированных LINQ решений намного сложнее, но оно того стоит. У меня есть старые SQL-проекты, и новые LINQ-проекты, которые мы параллельно развиваем. Поверь, мне есть с чем сравнивать. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 18:55 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей КНаоборот. Наплодить рукописного SQL много ума не надо, это все умеют. С дуру ... сам знаешь. Хоть в SQL, хоть в LINQ. SQL он только с виду прост, хотя LINQtoSQL не читабельнее. Дело привычки. Алексей КНаладить разработку типизированных LINQ решений намного сложнее, но оно того стоит. У меня есть старые SQL-проекты, и новые LINQ-проекты, которые мы параллельно развиваем. Поверь, мне есть с чем сравнивать. :-) Я даже не сомневаюсь что тебе есть с чем сравнивать (ИМХУ ты себя неопытного сравниваешь с собой опытным). Сравни инструменты, тот мой топик, твоя фраза "Но я в этом смысла не вижу" 19667066 , ты интуитивно сравниваешь, а у меня есть численный критерий (время выполнения), чувствуешь разницу? Я могу пописать разные варианты одного и того же и посмотреть на фактический результат, а у тебя только один инструмент - интуиция. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:20 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей КТы не напишешь на SQL то, что можно написать на LINQ. И что? Примерчики в студию! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:21 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiqueДля быстрой обработки данных. Зачем еще данные индексируют? Для красоты? Для работы с данными в памяти есть коллекции и словари. Зачем индексировать, ещё раз поинтересуюсь? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:22 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiqueПерегибаешь, хвост. И сравнить можно что угодно с чем угодно, хватало бы "фантазии". Нужно достать данные из БД - встает непростой выбор - а не пописать ли мне raw текст вставного SQL-запроса, или нажать несколько кнопок (linq) и данные уже в памяти. Что выбираем? Почему? Конечно linq и имеено из-за удобства\быстроты и прочего. Скажи нам - почему ТЫ выбираешь LINQ? Лет 5 наверное ещё пройдёт, прежде чем да некоторых дойдёт, что LINQ это не замена SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:24 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima T... а у тебя только один инструмент - интуиция.Ну а как. У меня же доступа к твоей БД нету, чтобы планы и статистику смотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:29 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVosttMonochromatiqueДля быстрой обработки данных. Зачем еще данные индексируют? Для красоты? Для работы с данными в памяти есть коллекции и словари. Зачем индексировать, ещё раз поинтересуюсь? словари, т.е. Dictionary<> это и есть сортированные данные, но с оверрхэдом как по памяти так и по времени наполнения. Если данные статичны, то дешевле (по времени и памяти) залить из в массив и отсортировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:29 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVosttАлексей КТы не напишешь на SQL то, что можно написать на LINQ. И что? Примерчики в студию!Я не смотрю "Поле чудес". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:30 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima Tсловари, т.е. Dictionary<> это и есть сортированные данные, но с оверрхэдом как по памяти так и по времени наполнения. Если данные статичны, то дешевле (по времени и памяти) залить из в массив и отсортировать.Dictionary<> это хэш-таблица. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:37 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей КDima T... а у тебя только один инструмент - интуиция.Ну а как. У меня же доступа к твоей БД нету, чтобы планы и статистику смотреть. а как план в linq смотреть? Я уже спрашивал выше, никто не ответил. Без обид, я везде в спорных вопросах пишу ИМХУ, т.е. я так думаю, но других так делать не заставляю. Мой опыт - это мой опыт (Visual FoxPro много лет, никаких типов, сплошной raw SQL) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:38 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TАлексей Кпропущено... Ну а как. У меня же доступа к твоей БД нету, чтобы планы и статистику смотреть. а как план в linq смотреть?Как посмотреть план выполнения SQL-запроса, сгенерированного LINQ? Берём "профайлером" и смотрим, ты же как-то смотрел. Или я не понял вопроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:41 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей КDima Tсловари, т.е. Dictionary<> это и есть сортированные данные, но с оверрхэдом как по памяти так и по времени наполнения. Если данные статичны, то дешевле (по времени и памяти) залить из в массив и отсортировать.Dictionary<> это хэш-таблица. Возможно, но работа с массивами быстрее если они влазят в кэш проца. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:43 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TБез обид, я везде в спорных вопросах пишу ИМХУ, т.е. я так думаю, но других так делать не заставляю. Мой опыт - это мой опыт (Visual FoxPro много лет, никаких типов, сплошной raw SQL)Зачем мне кого-то тут заставлять? Просто делюсь своим мнением, не более того. Просто не согласен с некоторыми высказываниями, о чём и сообщил. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:45 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiqueСкажи нам - почему ТЫ выбираешь LINQ? Ну вот пример есть, кстати, хороший. Есть у нас проект, где используется параллельно сразу основных 4 базы данных: MS SQL для мета-данных и истории (CQRS), другой MS SQL с read-only генерируемой нормализованной базой для отчётов, MongoDb для хранения кеша бизнес-данных и Lucene для поиска. К бизнес-данным и мета-информации есть доступ с помощью LINQ через слой доменной абстракции (как часть DSL). Единый доступ. Профит от генерации SQL в данном случае составляет лишь 20-30% от силы. Основная мощь в построении слоя бизнес-абстракции. Любое изменение это история. Мы уже обкатывали так называемые путешествия в прошлое, например, можно открыть и посмотреть состояние системы в режиме чтения на определенную дату и время. Можно откатывать отдельные транзакции. Все формочки генерятся. Бизнес-логика пишется вообще на Lua. Профит от LINQ тут колоссальный, так как на нём сидят все прикладные запросы к данным и он протаскивается даже внутрь бизнес-скриптов (политики безопасности, бизнес-валидация, бизнес-события, бизнес-логика). Ну а те, кто видят в LINQ лишь способ спрятаться от написания SQL, то это фейл, что ещё могу сказать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:47 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TАлексей Кпропущено... Dictionary<> это хэш-таблица. Возможно..."К гадалке не ходи" (ц) :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:47 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima Tсловари, т.е. Dictionary<> это и есть сортированные данные, но с оверрхэдом как по памяти так и по времени наполнения. Если данные статичны, то дешевле (по времени и памяти) залить из в массив и отсортировать. С какого ляда это они сортированные? Оверхед по сравнению с данными минимален. Для небольших коллекций конечно эффективней остортировать коллекцию, но это вообще фигня, а не оптимизация. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:48 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей КЯ не смотрю "Поле чудес". Слив засчитан. В чём смысл говорить то, что ты даже подтвердить не в силах? Кто б знал.. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:49 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima T а как план в linq смотреть? Там нет плана ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:49 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVosttАлексей КЯ не смотрю "Поле чудес". Слив засчитан.Кем? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 19:58 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей КDima Tпропущено... Возможно..."К гадалке не ходи" (ц) :-) а дальше прочитал что я писал? Тут топик где я just for fun развлекался, и уменьшение буфера до размеров кэша проца дало ускорение почти вдвое. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 20:01 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей ККем? Дурачка включаешь? На работе наверное прокатывает? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 20:02 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVosttС какого ляда это они сортированные? Оверхед по сравнению с данными минимален. Для небольших коллекций конечно эффективней остортировать коллекцию, но это вообще фигня, а не оптимизация. Небольших это сколько? Я поражаюсь на клев на О(1), посчитать хэш это бесплатно чтоли? Хэш таблица места не занимает? Жертвы маркетологов. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 20:06 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVostt1. Кривая структура БД, изначально не подходящая для задач, решаемых LINQ БД, особенно 10-15 лет назад, ничего не знали про LINQ. и как-то живут, по своим реляционным правилам. а БД, как и все в этом мире (2-й закон термодинамики неумолим), со временем тоже не молодеют, целлюлитом обрастают, или, даже, болеют. но живут. проектирование БД под ОРМ - это зло. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 20:20 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVosttАлексей КТы не напишешь на SQL то, что можно написать на LINQ. И что? Примерчики в студию! Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 20:23 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей КDima T, Ну и вообще, никто не заставляет создавать БД с помощью EF. Как по мне, так методика code-first так себе . БД лучше создавать "обычными" средствами, потом по БД генерировать DbContext. Благо, при наличии T4 Text Template кодогенераторы пишутся за 5 минут. Да и готовых кодогенераторов хватает. зависит от масштаба. для мелких систем - пойдет (хотя там столько гемороя, что даже там - ну его) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 20:26 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TПо теме топика: понимаю негодование ТС и понимаю откуда родилось требование LINQ наше всё. LINQ не дает стрелять в ногу, типизация не дает делать грубых ошибок, поэтому в одном большом проекте могут уживаться гуру и студенты, а на сегодня это важно, т.к. проекты большие, а гур мало и дорогие они. Тут вопрос больше в плоскости денег, что выходит за рамки данного форума, да и сайта тоже. фигня какая-то: что, студенты уже SQL не знают? да наоборот, гораздо сложнее включить мозги в ОРМ, так как ОРМ не отменяет SQL, а делает взгляд на него более критичным с точки зрения "объектности" ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 20:29 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TАлексей Кпропущено... "К гадалке не ходи" (ц) :-) а дальше прочитал что я писал? Тут топик где я just for fun развлекался, и уменьшение буфера до размеров кэша проца дало ускорение почти вдвое.Это замечательно, но это не делает Dictionary<> сортированным списком. Впрочем, если хочешь, чтобы это было так, то пусть будет так. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 21:02 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiqueНу и не могу не заметить - порой то, что можно запросто сделат на LINQ - очень запарно делать на SQL. если речь и дет о запросе реляционных данных, то SQL тут еще пока никто не обогнал ни в простоте, ни в эффективности ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 21:08 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
fsharp_fsharpАлексей КDima T, Ну и вообще, никто не заставляет создавать БД с помощью EF. Как по мне, так методика code-first так себе . БД лучше создавать "обычными" средствами, потом по БД генерировать DbContext. Благо, при наличии T4 Text Template кодогенераторы пишутся за 5 минут. Да и готовых кодогенераторов хватает. зависит от масштаба. для мелких систем - пойдет (хотя там столько гемороя, что даже там - ну его)Не понял, что не так с кодогенератором? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 21:12 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
fsharp_fsharpMonochromatiqueНу и не могу не заметить - порой то, что можно запросто сделат на LINQ - очень запарно делать на SQL. если речь и дет о запросе реляционных данных, то SQL тут еще пока никто не обогнал ни в простоте, ни в эффективностиНапример, в SQL нет аналога ассоциаций. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 21:14 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей Кfsharp_fsharpпропущено... если речь и дет о запросе реляционных данных, то SQL тут еще пока никто не обогнал ни в простоте, ни в эффективностиНапример, в SQL нет аналога ассоциаций. а чем PK - FK не ассоциация? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 21:46 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей Кfsharp_fsharpпропущено... зависит от масштаба. для мелких систем - пойдет (хотя там столько гемороя, что даже там - ну его)Не понял, что не так с кодогенератором? я не на этом сделал акцент. а на том, что "методика code-first так себе" - с этим согласен. а все эти кодогенераторы, особенно на легаси БД... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 21:51 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
fsharp_fsharphVosttпропущено... Примерчики в студию! Код: 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.
в оракле короче это пишется при помощи LISTAGG ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 21:54 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima T Monochromatique ведь утверждает что EF настолько хорош что опускаться до особенностей работы SQL-сервера не надо, не надо заморачиваться что там за СУБД под твоей прогой, EF сам все порешает. Слушай, Дима Тэ, это же у тебя там что-то с линком не срастается; нравится писать селекты в блокноте - так вперед. Не знаю, где ты находишься в пищевой цепочке разработки, но лично я бы решение на прямых запросах не заказал. Я думаю, такими же положениями руководствуются утырки из 1С, которые генерят текст запроса в рантайме - А-ЧО-ТАКОВА? Каждому свое. Я прямыми запросами еще в JDBC наелся - рефакторинг - сказка. Знаешь такое слово? )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 21:55 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
я про то, что в LINQ это сделать нельзя, и еще масса полезных "классических" запросов, которые LINQ не осилит. тут только мапить DTO на SQL ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 21:56 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
fsharp_fsharpMonochromatiqueНу и не могу не заметить - порой то, что можно запросто сделат на LINQ - очень запарно делать на SQL. если речь и дет о запросе реляционных данных, то SQL тут еще пока никто не обогнал ни в простоте, ни в эффективности Выбрать top 10 контрагентов по продажам за месяц и выбрать у каждого самый крупный, но не максимальный заказ. Второй по сумме, в общем. На LINQ одна строчка. На SQL? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 21:58 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVosttMonochromatiqueПерегибаешь, хвост. И сравнить можно что угодно с чем угодно, хватало бы "фантазии". Нужно достать данные из БД - встает непростой выбор - а не пописать ли мне raw текст вставного SQL-запроса, или нажать несколько кнопок (linq) и данные уже в памяти. Что выбираем? Почему? Конечно linq и имеено из-за удобства\быстроты и прочего. Скажи нам - почему ТЫ выбираешь LINQ? Лет 5 наверное ещё пройдёт, прежде чем да некоторых дойдёт, что LINQ это не замена SQL. Сколько лет должно пройти, чтобы ты забил в яндекс - как расшифровывается "LINQ"? Ты сам то, знаешь что это такое? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2016, 22:03 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TLINQ не дает стрелять в ногу, типизация не дает делать грубых ошибок, поэтому в одном большом проекте могут уживаться гуру и студенты, а на сегодня это важно, т.к. проекты большие, а гур мало и дорогие они. Это строчки из резюме? )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 00:05 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
fsharp_fsharpАлексей Кпропущено... Например, в SQL нет аналога ассоциаций. а чем PK - FK не ассоциация?PK и FK это constraint. Аналог ассоциации это join. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 11:39 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
fsharp_fsharpя про то, что в LINQ это сделать нельзя, и еще масса полезных "классических" запросов, которые LINQ не осилит. тут только мапить DTO на SQLНу давай перечислим случаи, когда из-за ограниченных возможностей LINQ фрагмент запроса придётся разместить во view: 1. Рекурсивный запрос. 2. Необходимость использования хинтов. 3....... Можешь продолжить? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 11:48 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVostt Для начала необходимо понять, что LINQ это не альтернатива SQL, никогда ей не была, и вовсе не задумывалось таковой. Поэтому сравнивать SQL vs LINQ — вообще не корректно, в принципе. Это как сравнивать пилу с молотком. Не как пилу с молотком, но как цепную бензопилу и циркульную электропилу -- вполне можно. И то, и другое служит для одних и тех же целей. Можно сделать с помощью одного, можно с помощью другого. Встроенные (embedded) запросы были очень давно, и всегда их сравнивали с невстроенными. Так что всё правомерно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 12:25 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Если таблиц немного, база весит меньше пол-терабайта, то может строить запросы через linq или orm какую или еще что, прокатит. Но по собственному опыту те запросы которые генерятся orm-ками для таблиц по 60млрд строк настолько неоптимальные, что оптимизатор mssql (например) просто выпадает в осадок... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 13:14 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
X-CiteЕсли таблиц немного, база весит меньше пол-терабайта, то может строить запросы через linq или orm какую или еще что, прокатит. Но по собственному опыту те запросы которые генерятся orm-ками для таблиц по 60млрд строк настолько неоптимальные, что оптимизатор mssql (например) просто выпадает в осадок...И какой вывод нужно сделать из прочитанного? В MSSQL плохой оптимизатор? Есть программисты, не умеющие работать с ОРМ? ОРМ формирует разные запросы для таблиц с менее и более 60 млрд записей? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 14:39 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей КX-CiteЕсли таблиц немного, база весит меньше пол-терабайта, то может строить запросы через linq или orm какую или еще что, прокатит. Но по собственному опыту те запросы которые генерятся orm-ками для таблиц по 60млрд строк настолько неоптимальные, что оптимизатор mssql (например) просто выпадает в осадок...И какой вывод нужно сделать из прочитанного? В MSSQL плохой оптимизатор? Есть программисты, не умеющие работать с ОРМ? ОРМ формирует разные запросы для таблиц с менее и более 60 млрд записей? Вывод простой - оптимизатор MS SQL может "выпасть в осадок" и некто X-Cite это неоднократно наблюдал. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 15:58 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiqueНе знаю, где ты находишься в пищевой цепочке разработки Работодатель. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 20:21 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей Кfsharp_fsharpпропущено... если речь и дет о запросе реляционных данных, то SQL тут еще пока никто не обогнал ни в простоте, ни в эффективностиНапример, в SQL нет аналога ассоциаций. В синтаксисе нет. SQL не ООП, потому и нет. Есть join в него и транслируются ассоциации. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 20:33 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей Кfsharp_fsharpя про то, что в LINQ это сделать нельзя, и еще масса полезных "классических" запросов, которые LINQ не осилит. тут только мапить DTO на SQLНу давай перечислим случаи, когда из-за ограниченных возможностей LINQ фрагмент запроса придётся разместить во view: 1. Рекурсивный запрос. 2. Необходимость использования хинтов. 3....... Можешь продолжить? Зачем надо костыль со view? А на кой нужен view если можно без view написать raw select? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 20:36 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TАлексей Кпропущено... Ну давай перечислим случаи, когда из-за ограниченных возможностей LINQ фрагмент запроса придётся разместить во view: 1. Рекурсивный запрос. 2. Необходимость использования хинтов. 3....... Можешь продолжить? Зачем надо костыль со view? А на кой нужен view если можно без view написать raw select? часто, даже, и view не написать - where либо не получится из вне повесить, или это будет очень не оптимально. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 20:48 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TАлексей Кпропущено... Ну давай перечислим случаи, когда из-за ограниченных возможностей LINQ фрагмент запроса придётся разместить во view: 1. Рекурсивный запрос. 2. Необходимость использования хинтов. 3....... Можешь продолжить? Зачем надо костыль со view? А на кой нужен view если можно без view написать raw select?С view linq может работать как с обычной таблицей. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 21:07 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
fsharp_fsharpDima Tпропущено... Зачем надо костыль со view? А на кой нужен view если можно без view написать raw select? часто, даже, и view не написать - where либо не получится из вне повесить, или это будет очень не оптимально. Список сможешь продолжить? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 21:11 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей Кfsharp_fsharpпропущено... часто, даже, и view не написать - where либо не получится из вне повесить, или это будет очень не оптимально. Список сможешь продолжить? я же про то что и вью не спасет. так что не в тот мне список ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 21:17 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
fsharp_fsharpАлексей Кпропущено... Список сможешь продолжить? я же про то что и вью не спасет. так что не в тот мне список если это не мат вью ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 21:18 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
fsharp_fsharpАлексей Кпропущено... Список сможешь продолжить? я же про то что и вью не спасет. так что не в тот мне списокНу тогда рассказывай, почему where на view из вне не получится повесить. Всегда получалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 21:37 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей Кfsharp_fsharpпропущено... я же про то что и вью не спасет. так что не в тот мне списокНу тогда рассказывай, почему where на view из вне не получится повесить. Всегда получалось. потому что куча параметров может быть внурти запроса ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 21:38 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
fsharp_fsharpАлексей Кпропущено... Ну тогда рассказывай, почему where на view из вне не получится повесить. Всегда получалось. потому что куча параметров может быть внурти запросаНе тот случай. Во view вынесен маленький фрагмент запроса, который невозможно написать на linq. Чего-то большого и сложного в этой view по определению быть не может. Поэтому не надо проецировать на обсуждаемую view все свои воспоминания, связанные с огромными sql запросами. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 21:45 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей Кfsharp_fsharpпропущено... потому что куча параметров может быть внурти запросаНе тот случай. Во view вынесен маленький фрагмент запроса, который невозможно написать на linq. Чего-то большого и сложного в этой view по определению быть не может . Поэтому не надо проецировать на обсуждаемую view все свои воспоминания, связанные с огромными sql запросами. ну конечно, прямо по-определению. с запросами с параметрами не приходилось работать? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 21:48 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
fsharp_fsharpАлексей Кпропущено... Не тот случай. Во view вынесен маленький фрагмент запроса, который невозможно написать на linq. Чего-то большого и сложного в этой view по определению быть не может . Поэтому не надо проецировать на обсуждаемую view все свои воспоминания, связанные с огромными sql запросами. ну конечно, прямо по-определению. с запросами с параметрами не приходилось работать?Например, во view вынесена рекурсивная часть запроса. Накой тут какие-то параметры? Да и какие параметры могут быть у view? Это же не inline-функция. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 21:52 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TMonochromatiqueНе знаю, где ты находишься в пищевой цепочке разработки Работодатель. А чего тогда споришь? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2016, 22:40 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
fsharp_fsharpБД, особенно 10-15 лет назад, ничего не знали про LINQ. и как-то живут, по своим реляционным правилам. а БД, как и все в этом мире (2-й закон термодинамики неумолим), со временем тоже не молодеют, целлюлитом обрастают, или, даже, болеют. но живут. Ты оголтелую хрень какую-то несёшь. Когда-то и баз данных вообще не было, и калькуляторов не было. Гремели деревянными счётами и жили себе спокойно. fsharp_fsharpпроектирование БД под ОРМ - это зло. Я сомневаюсь, что ты свою глупую мантру сможешь пояснить, поэтому даже просить аргументировать этот бред не буду. Скажу только одно. Один из симптомов SQL головного мозга -- это когда человек вообще забывает для чего базы данных были придуманы. А придуманы они были хранить данные так, чтобы с ними было удобно работать. Если архитектура приложения, используемые ORM, задачи бизнеса в конце концов накладывают свои требования к проектированию БД для удобство выполнения задач и достижения конечной цели, а некий типа крутой БД архитектор встаёт раком со своими принципами, то он в этой же позе покидает команду и шурует в поисках такого же упоротого стада. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2016, 07:50 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
fsharp_fsharphVosttпропущено... Примерчики в студию! fsharp_fsharp Код: sql 1. 2. 3. 4.
Ты хоть понял, о чём идёт речь? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2016, 07:51 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
MonochromatiqueСколько лет должно пройти, чтобы ты забил в яндекс - как расшифровывается "LINQ"? Ты сам то, знаешь что это такое? Ну просвяти уж, раз начал. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2016, 07:52 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
О чем спор? Непонятно. Можно гвозди забивать микроскопом? - можно. Вопрос "нужно ли?" ушел из области спора. Опять же ушел в плоскость денег: что дороже - специалист, умеющий забивать гвозди без микроскопа или сверхпрочный микроскоп? В разных ситуациях по разному, чаще оказывается дешевле сверхпрочный микроскоп, т.е. усиление железа под возрастающие потребности. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2016, 20:28 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima T О чем спор? Непонятно. Можно гвозди забивать микроскопом? - можно. Вопрос "нужно ли?" ушел из области спора. Опять же ушел в плоскость денег: что дороже - специалист, умеющий забивать гвозди без микроскопа или сверхпрочный микроскоп? В разных ситуациях по разному, чаще оказывается дешевле сверхпрочный микроскоп, т.е. усиление железа под возрастающие потребности.Но точно не о микроскопах. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2016, 04:16 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVosttАлексей ККем? Дурачка включаешь?Да. Потому что не понимаю, пример чего ты ожидаешь увидеть. В LINQ и SQL есть как уникальные возможности, так и общие. Это и без примеров понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2016, 04:22 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
hVosttfsharp_fsharpБД, особенно 10-15 лет назад, ничего не знали про LINQ. и как-то живут, по своим реляционным правилам. а БД, как и все в этом мире (2-й закон термодинамики неумолим), со временем тоже не молодеют, целлюлитом обрастают, или, даже, болеют. но живут. Ты оголтелую хрень какую-то несёшь. Когда-то и баз данных вообще не было, и калькуляторов не было. Гремели деревянными счётами и жили себе спокойно. fsharp_fsharpпроектирование БД под ОРМ - это зло. Я сомневаюсь, что ты свою глупую мантру сможешь пояснить, поэтому даже просить аргументировать этот бред не буду. Скажу только одно. Один из симптомов SQL головного мозга -- это когда человек вообще забывает для чего базы данных были придуманы. А придуманы они были хранить данные так, чтобы с ними было удобно работать. Если архитектура приложения, используемые ORM, задачи бизнеса в конце концов накладывают свои требования к проектированию БД для удобство выполнения задач и достижения конечной цели, а некий типа крутой БД архитектор встаёт раком со своими принципами, то он в этой же позе покидает команду и шурует в поисках такого же упоротого стада. 1. с БД может работать не один клиент 2. ОРМ - это всегда локализованная задача для клиента - он вырывает из БД только то, что надо приложению. а БД - там еще много других задач. 3. наезд на "типа крутой БД архитектор" может оправдываться только если ты сам "типа крутой БД архитектор". по твоим постам - это не так: "С другой стороны на SQL можно написать ТАКОЕ, что в LINQ сделать почти не реально... вот только надо понимать, такие запросы изначально нафиг не нужны были в LINQ, а если пристально присмотреться, то скорее всего необходимость таких адских запросов — это большой косяк в разработке. Но то такое..." ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2016, 14:58 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей КX-CiteЕсли таблиц немного, база весит меньше пол-терабайта, то может строить запросы через linq или orm какую или еще что, прокатит. Но по собственному опыту те запросы которые генерятся orm-ками для таблиц по 60млрд строк настолько неоптимальные, что оптимизатор mssql (например) просто выпадает в осадок...И какой вывод нужно сделать из прочитанного? В MSSQL плохой оптимизатор? Есть программисты, не умеющие работать с ОРМ? ОРМ формирует разные запросы для таблиц с менее и более 60 млрд записей? Я имел ввиду, что те запросы которые она генерирует, особенно сложные, настолько сложны при чтении их на sql, что не только человек, не может разобрать что там выбирается (без рефакторинга), но и сам оптимизатор строит далеко не оптимальные планы. Для многомиллионных таблиц, не оптимальный план грозит долгой выборкой. На небольших таблицах, там все равно как данные выбирались. Важно использовать то, что подходит под конкретную цель. Если быстрая разработка с одинарными инструкциями (актуальными для OLTP баз), то linq или что там, подойдет вполне. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2016, 16:35 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
X-CiteАлексей Кпропущено... И какой вывод нужно сделать из прочитанного? В MSSQL плохой оптимизатор? Есть программисты, не умеющие работать с ОРМ? ОРМ формирует разные запросы для таблиц с менее и более 60 млрд записей? Я имел ввиду, что те запросы которые она генерирует, особенно сложные, настолько сложны при чтении их на sql, что не только человек, не может разобрать что там выбирается (без рефакторинга), но и сам оптимизатор строит далеко не оптимальные планы. Для многомиллионных таблиц, не оптимальный план грозит долгой выборкой. На небольших таблицах, там все равно как данные выбирались. Важно использовать то, что подходит под конкретную цель. Если быстрая разработка с одинарными инструкциями (актуальными для OLTP баз), то linq или что там, подойдет вполне.Что мешает строить LINQ запрос таким образом, чтобы на выходе получился нужный SQL запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2016, 16:58 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
ну и что вы прикопались к linq and orm каждый танцует как умеет ( научен) я когда увидел в передпоследней конторе как пишут код без орм (~ 100 таблиц) и ооп все в лесенку одной простыней, тоже сначала прихуел, потом ничо, показал, объяснил - начали жрать орм аш за ушами трещало. linq такая зверь что если не хватает функционала его можно накручивать как в меньшую сторону так и в большую если не нравится как он формирует запросы делайте свой обходчик - паттерн - визитер, если ваще не нравится ковыряйтесь в навозе индексах, на любителя ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2016, 19:17 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей КЧто мешает строить LINQ запрос таким образом, чтобы на выходе получился нужный SQL запрос? Смысл? Если знаешь какой должен быть SQL запрос, то зачем тратить время на подгонку LINQ запроса под результат? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2016, 20:28 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Dima TАлексей КЧто мешает строить LINQ запрос таким образом, чтобы на выходе получился нужный SQL запрос? Смысл? Если знаешь какой должен быть SQL запрос, то зачем тратить время на подгонку LINQ запроса под результат?Ну если ты сам не можешь ответить на этот вопрос, то тогда да, для тебя смысла использовать LINQ2SQL нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 05:03 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей КDima Tпропущено... Смысл? Если знаешь какой должен быть SQL запрос, то зачем тратить время на подгонку LINQ запроса под результат?Ну если ты сам не можешь ответить на этот вопрос, то тогда да, для тебя смысла использовать LINQ2SQL нет. я например, использую NHibernate. Но желания противоставления его SQL у меня как-то не возникало. И с тезисом "Смысл? Если знаешь какой должен быть SQL запрос, то зачем тратить время на подгонку LINQ запроса под результат?" полностью согласен. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 05:27 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
fsharp_fsharpАлексей Кпропущено... Ну если ты сам не можешь ответить на этот вопрос, то тогда да, для тебя смысла использовать LINQ2SQL нет. я например, использую NHibernate. Но желания противоставления его SQL у меня как-то не возникало. И с тезисом "Смысл? Если знаешь какой должен быть SQL запрос, то зачем тратить время на подгонку LINQ запроса под результат?" полностью согласен.Рад, что ты нашёл единомышленника. Не понимаю, почему типизация при работе с данными для вас ничего не значит. Впрочем, моё какое дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 05:46 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
fsharp_fsharpЕсли знаешь какой должен быть SQL запрос, то зачем тратить время на подгонку LINQ запроса под результат?" . Это время окупится при отладке и рефакторинге. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 09:23 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
X-CiteЯ имел ввиду, что те запросы которые она генерирует, особенно сложные, настолько сложны при чтении их на sql, что не только человек, не может разобрать что там выбирается (без рефакторинга), но и сам оптимизатор строит далеко не оптимальные планы. Для многомиллионных таблиц, не оптимальный план грозит долгой выборкой. На небольших таблицах, там все равно как данные выбирались. Важно использовать то, что подходит под конкретную цель. Если быстрая разработка с одинарными инструкциями (актуальными для OLTP баз), то linq или что там, подойдет вполне. Так же есть запросы, которые генерирует программист, особенно сложные, настолько сложны при чтении их на sql, что не только человек, не может разобрать что там выбирается (без рефакторинга), но и сам оптимизатор строит далеко не оптимальные планы. Для многомиллионных таблиц, не оптимальный план грозит долгой выборкой. На небольших таблицах, там все равно как данные выбирались. Важно использовать то, что подходит под конкретную цель. Если быстрая разработка с одинарными инструкциями (актуальными для OLTP баз), то linq или что там, подойдет вполне. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 17:12 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
Алексей КТакое можно сделать через view. Но использовать хинты приходится редко, это обычно следствие каких-нибудь проблем, которые лучше устранить, чем бороться со следствием. Ну или ХП. Просто БД ведет начала ваяться на SQL Server 6.0 и теперь очень старая и очень большая, используется в 100500 различных подсистемах. Хотя все равно не понятно, почему оптимизатор не использует специально созданный для join индекс без явного указания. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 17:33 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
ЕвгенийВТак же есть запросы, которые генерирует программист, особенно сложные, настолько сложны при чтении их на sql, что не только человек, не может разобрать что там выбирается (без рефакторинга), но и сам оптимизатор строит далеко не оптимальные планы. Есть такое. Причем оптимизатор начинает тупить раньше чем пропадает понимание при чтении запроса. Конкретный пример: запрос 20-30 строк, с подвывертами, но читаемый, выполнялся почти минуту. Вынес один подзапрос во временную таблицу и залетало, меньше секунды. В чистом виде затупление оптимизатора, как понимаю он пытался запрос с подзапросами скомбинировать в единый план и не смог. ЕвгенийВХотя все равно не понятно, почему оптимизатор не использует специально созданный для join индекс без явного указания. Может статистики отключены или еще чего. Это лучше в форуме по MSSQL спросить. Использование хинтов - последнее дело, т.к. по началу они помогают, а в какой-то момент могут наоборот тормоза начать создавать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 18:04 |
|
Сложные SQL запросы на языке LINQ
|
|||
---|---|---|---|
#18+
ЕвгенийВАлексей КТакое можно сделать через view. Но использовать хинты приходится редко, это обычно следствие каких-нибудь проблем, которые лучше устранить, чем бороться со следствием. Ну или ХП. Просто БД ведет начала ваяться на SQL Server 6.0 и теперь очень старая и очень большая, используется в 100500 различных подсистемах.Я предложил view, потому что LINQ с view может работать как с обычной таблицей. В данном случае view сделать примерно таким, больше в него ничего не помещать: Код: sql 1. 2.
ЕвгенийВХотя все равно не понятно, почему оптимизатор не использует специально созданный для join индекс без явного указания.Ну всякое бывает, но как правило анализ ситуации показывает, что у оптимизатора есть причины выбрать выбранный план выполнения. Во всяком случае я для себя решил, что использование хинтов, это временное решение, требующее дальнейшего разбирательства. зы: Ну а если система содержит большую часть логики в хранимых процедурах, то и нет смысла использовать LINQ в такой системе. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2016, 04:38 |
|
|
start [/forum/topic.php?all=1&fid=17&tid=1349361]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
169ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
155ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 386ms |
0 / 0 |