metaclass: (Default)
[personal profile] metaclass
http://d4s.livejournal.com/210142.html
Вопрос про обучение SQL. Не про продажу человеко-часов конкретному кастомеру с конкретной СУБД.
В комментариях ад содома и гоморры, с приведением каких-то дичайших конструкций из частных реализаций.

Людей нужно хотя бы обучить тому, что такое реляционная модель, что такое индексы и как вообще связаны эти буковки с результатом. А уж конкретные извращения можно изучить в процессе работы с конкретной БД, очевидно, что засирать этим голову ДО понимания базовых вещей совершенно не нужно.

Date: 2012-07-01 09:10 am (UTC)
From: [identity profile] metaclass.livejournal.com
Нет.
Объясняю почему: у тебя лежит 50 гигабайт проводок, тебе нужны итоги по ним.
Ничто, кроме select chervie, sum(total) from .. group by chervie это не вытянет с достаточной производительностью. Если суммировать на аппсервере - оно только фетчить-маршалить-десериализовать будет годами.

Date: 2012-07-01 09:13 am (UTC)
From: [identity profile] theiced.livejournal.com
это исключение нужное очень редко. ну и любой орм это умеет автоматом энивэй.

Date: 2012-07-01 10:07 am (UTC)
From: [identity profile] metaclass.livejournal.com
Какое редко? Ребе, у меня 99% опердени состоит из таких и более сложных запросов.

Другое дело, что логику оттуда надо действительно нахер выкинуть, но конкретно where/index by/group by надо выполнять в БД. А поскольку там все занормализовано - в эти выражения попадают поля из связанных таблиц и в итоге я в душе не ебу, как это написать на ORM так чтобы он сгенерировал нужный SQL запрос.

Date: 2012-07-01 10:17 am (UTC)
From: [identity profile] w00dy.livejournal.com
Ну в чём пробелмы то. where генерится чрезе Where (), всякие group by - при выборке подчинёных объектов. Как генерить запросы - но вы ведь чем-то думали когда писали sql, вот аналогично и при написании кода, только у вас не таблица A и B, а объекты А и B и связи между ними. Всё просто.

Date: 2012-07-01 10:46 am (UTC)
From: [identity profile] metaclass.livejournal.com
И работает только для MSSQL провайдера, только на с# и только в одной версии дотнета, да.

Date: 2012-07-01 10:53 am (UTC)
From: [identity profile] w00dy.livejournal.com
Ну почему? Linq вроде как nHibernate поддерживает, есть провайдеры у DevExpress под кучу баз. Разботает на всём .net-овском есть. Запросы ведь не обязательно писать в этом sql-ном стиле. Можно и T ().Where (u => u.Id == userId).Select (u => u.Name).First ()

Date: 2012-07-01 09:39 am (UTC)
From: [identity profile] w00dy.livejournal.com
Ну ребе, любой вменяемый орм позволяет дёрнуть sql напрямую, если сильно нужно конечно.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 21st, 2025 10:26 am
Powered by Dreamwidth Studios