Форум: "Прочее";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];
ВнизМузыкой навеяло... Найти похожие ветки
← →
Ega23 © (2007-11-01 18:32) [80]
> "Именно все" нужны только в том случае, если твоё приложение
> -- что-то вроде SQLExplorer.
>
2 справочные таблицы, третяя - связка "многие-ко-многим" между справочными с ещё одним дополнительным полем для каждого сочетания.
Обычно пишуSelect T3.*, T1.Name, T2.Name
from Table1 T1, Table2 T2, Table3 T3
where T3.T1ID=T1.ID and T3.T2ID=T2.ID
← →
Val © (2007-11-01 18:36) [81]жестоко лишать людей возможности массовых вставок.
← →
Eraser © (2007-11-01 18:38) [82]
> Val © (01.11.07 18:36) [81]
а кто лишает?insert (name, address) values select t.name, t.address from t_user t;
← →
DiamondShark © (2007-11-01 19:31) [83]
> Обычно пишу
>
> Select T3.*, T1.Name, T2.Name
А почему не
SELECT T1.ID, T1.Name, T2.ID, T2.Name
?
Это и есть то, о чём я говорил. После того, как написано слово "SELECT" нет понимания того, что и зачем тебе нужно. Так пишет дрессированый робот, а не человек. Человек думает так: "Тут мне нужны (SELECT) код и название фиговины (T1.ID, T1.Name), а ещё код и название хреновины (T2.ID, T2.Name)".
> from Table1 T1, Table2 T2, Table3 T3
> where T3.T1ID=T1.ID and T3.T2ID=T2.ID
Повбывав бы!
Буквы экономишь? Иннер джоин лень писать?
А как мне потом в каше из эндов разгребаться взглядом?
← →
DiamondShark © (2007-11-01 19:34) [84]
> 2 справочные таблицы, третяя - связка
А потом справочники решили реплицировать. Ну и нафига тебе rowguid из T3?
← →
Vendict © (2007-11-01 19:39) [85]
> Ega23 © (01.11.07 18:28) [77]
чур меня, чур !
← →
Ega23 © (2007-11-01 19:55) [86]Не забывай, что это не просто связка "многие-ко-многим", там на каждом пересечении ещё какая-то фигня стоит.
Когда просто связь - я так, естественно, не пишу.
> Буквы экономишь? Иннер джоин лень писать?
А нахрена????
← →
Ega23 © (2007-11-01 19:57) [87]
> чур меня, чур !
А почему?
Не, я сам случайно про такую узнал, когда тестовую табличку генерил.
Но тем-не-менее - факт. :)
← →
Vendict © (2007-11-01 20:10) [88]
> А почему?
я как-то раз увидел, как в Acsess"e число представляется ...
не нравится просто мне отход от стандартов и придумывания своих. особенно, когда это делает всеми глубокопочетаемое MS.
← →
Vendict © (2007-11-01 20:10) [89]
> число
всмысле дата.
← →
wicked © (2007-11-01 21:09) [90]> Ega23 © (01.11.07 19:55) [86]
> > Буквы экономишь? Иннер джоин лень писать?
>
>
> А нахрена????
всё ради читабельности и удобства сопровождения - удобно, когда условия связок таблиц и условия фильтрования строк отдельно... личный опыт
← →
Sergey Masloff (2007-11-01 23:22) [91]Sergey13 © (01.11.07 13:50) [24]
>Т.е. БД у вас одна на всех, а к клиентам на велике ездите?
Ну у нас БД одна на всех 10000 пользователей в паре десятков стран. Что тут плохого? Что все данные (и правила) в одном месте?
← →
Sergey Masloff (2007-11-01 23:27) [92]DiamondShark © (01.11.07 18:28) [78]
>В приложении определённой предметной области, во-первых, "именно все" >поля мало когда нужны, а, во-вторых, если программист написал SELECT *, >значит в момент написания этого кода он слабо представлял себе,
Довольно спорное утверждение. Ну не select * но нетипизированные курсоры использую постоянно. У такого подхода масса плюсов (как и у любого другого если знать где и как его применять).
← →
Petr V. Abramov © (2007-11-02 00:25) [93]> Sergey Masloff (01.11.07 23:27) [92]
> Ну не select * но нетипизированные курсоры (sys_refcursor?)
ну две большие разницы, как, говорят, говорят в Одессе
выборка лишних полей никогда на сеть хорошо не влияла -> на общий перфоменс тоже, особенно на фиговых каналах, да и перфоменс сервера тоже
← →
Думкин © (2007-11-02 05:56) [94]> Sergey Masloff (01.11.07 23:22) [91]
И вы к ним на велике ездите или таки по сети новые версии экзешников сливаете? Речь ведь шла о том, что надо физически пронестись по точкам.
← →
Bless © (2007-11-02 09:20) [95]
> clickmaker © (01.11.07 17:08) [71]
>
> Доступ на таблицы и прочие хранимки не разграничивается,
> потому как работать с ними может только sa.
Непонятно. А как этими хранимками пользуется приложение на стороне клиента? Оно работает из-под sa? А если пароль sa сменился?
> wicked © (01.11.07 21:09) [90]
> всё ради читабельности и удобства сопровождения - удобно,
> когда условия связок таблиц и условия фильтрования строк
> отдельно... личный опыт
+1
← →
Anatoly Podgoretsky © (2007-11-02 09:29) [96]
> Объяснялось это тем, что исключения ни в коем случае не
> должны прерывать работы программы. Лучше об ошибке сообщить
> другим способом, например числовым кодом возврата.
Объяснение нормально и естественное, но реализация не соответствует. За подобную пожизненый эцик с гвоздями.
← →
Sergey13 © (2007-11-02 09:30) [97]> [78] DiamondShark © (01.11.07 18:28)
> В приложении определённой предметной области...
Не стОит выдавать свои наблюдения за обобщенный опыт всего прогрессивного человечества. Завались случаев, когда нужны действительно все поля таблицы.
← →
clickmaker © (2007-11-02 09:33) [98]
> [60] homm © (01.11.07 15:02)
да, вот так работает
HTML, BODY, #frmMain, #divMain {
height: 100%;
}
ИЕ и Лиса, видимо, по умолчанию предполагают, что эти элементы 100%. Вот это и сбило с толку
← →
clickmaker © (2007-11-02 09:36) [99]
> [95] Bless © (02.11.07 09:20)
>
> > clickmaker © (01.11.07 17:08) [71]
> >
> > Доступ на таблицы и прочие хранимки не разграничивается,
> > потому как работать с ними может только sa.
>
>
> Непонятно. А как этими хранимками пользуется приложение
> на стороне клиента? Оно работает из-под sa?
нет, для него заведен специальный логин. С полномочиями ниже, чем sa.
← →
ZeroDivide © (2007-11-02 09:44) [100]
> wicked © (01.11.07 21:09) [90]
>
> > Ega23 © (01.11.07 19:55) [86]
>
> > > Буквы экономишь? Иннер джоин лень писать?
> >
> >
> > А нахрена????
>
> всё ради читабельности и удобства сопровождения - удобно,
> когда условия связок таблиц и условия фильтрования строк
> отдельно... личный опыт
А я тоже не пишу джоины и проблем особых не испытываю и вообще... оракловкие плюсики мне нарявятся куда больше, чем писать джоины.
t1.TABLE2_ID = t2.ID (+) - фарева!
← →
Anatoly Podgoretsky © (2007-11-02 09:52) [101]> Sergey13 (02.11.2007 09:30:37) [97]
Это противоречит?
Select полный список полей
insert tbl1(полный список полей) select полный список полей from tbl2
Если лень, то работника увольнять.
← →
Sergey13 © (2007-11-02 09:58) [102]> [101] Anatoly Podgoretsky © (02.11.07 09:52)
> Это противоречит?
Чему? Если нужны все поля, почему Select * это повод для увольнения?
← →
ЮЮ © (2007-11-02 10:05) [103]> Если нужны все поля
Зачем нужны атрибуты сущности неизвестные при разработке клиента?
Естественно, это не касается приложений, где таблицы БД как раз и являются объектами предметной области.
← →
b z (2007-11-02 10:12) [104]
> Зачем нужны атрибуты сущности неизвестные при разработке клиента?
а если так, xp:
.....
insert into table .....
.....
select * from table where id=<inserted>
"за кадром" работают тригера и все такое, тут тоже это не катит?
← →
Anatoly Podgoretsky © (2007-11-02 10:17) [105]> Sergey13 (02.11.2007 09:58:42) [102]
Фирма не настолько бедна, что бы постоянно увеличивать мощность серверов, наверняка в состоянии платить грамотному программисту.
← →
ЮЮ © (2007-11-02 10:18) [106]> А я тоже не пишу джоины и проблем особых не испытываю и
> вообще...
Пример абсолютной нелюбви:
http://delphimaster.net/view/2-1193987162/
Select * From A, B, C
А связь, небось, устанавливает в Filter, то-то вопросы по нему так популярны стали :)
← →
Sergey13 © (2007-11-02 10:19) [107]> [103] ЮЮ © (02.11.07 10:05)
> Зачем нужны атрибуты сущности неизвестные при разработке
> клиента?
Что значит неизвестные? Если есть спроектированная структура, то почему разработчику неизвестно назначение атрибутов? Если в будущем структура будет меняться, то по любому надо отражать это изменение в клиенте.
Опять же, в каждом конкретном случае решение должно быть конкретным и обоснованным, ИМХО. Естественно за выборку ненужных полей надо наказывать. Но именно ненужных. Пока же обсуждение (вернее осуждение) идет в ключе якобы существующих общих правил и стандартов.
← →
ЮЮ © (2007-11-02 10:25) [108]> Если есть спроектированная структура, то почему разработчику
> неизвестно назначение атрибутов?
Если они ему известны, то почему влом их указать? Из-за любви к FieldByName?
← →
Sergey13 © (2007-11-02 10:28) [109]> [108] ЮЮ © (02.11.07 10:25)
Если их указать функциональность запроса изменится?
← →
ЮЮ © (2007-11-02 10:34) [110]>Если их указать функциональность запроса изменится?
Да, если изменится структура таблицы (сдуру кто-то добавит BLOB поле)
← →
Anatoly Podgoretsky © (2007-11-02 10:37) [111]> Sergey13 (02.11.2007 10:28:49) [109]
Изменится, не не функциональность запроса, а производительность сервера.
← →
Sergey13 © (2007-11-02 10:38) [112]> [110] ЮЮ © (02.11.07 10:34)
Если структура меняется сдуру, то тут уже ничего не изменишь. 8-)
← →
Sergey13 © (2007-11-02 10:41) [113]> [111] Anatoly Podgoretsky © (02.11.07 10:37)
Почему? Если в таблице 2 поля то * будет медленнее чем Id, Name?
← →
Anatoly Podgoretsky © (2007-11-02 10:50) [114]> Sergey13 (02.11.2007 10:41:53) [113]
Тем что сервер будет вынужден делать разбор - менять звездочку на список полей как минимум, а оптимизатор будет эту конструкцию каждый раз разбирать и компилировать. Налицо деградация производительности.
← →
Sergey13 © (2007-11-02 10:56) [115]> [114] Anatoly Podgoretsky © (02.11.07 10:50)
С другой стороны длина запроса возрастает, возрастает время на разбор правильности имен полей и принадлежности их таблице. Плюс разница в написании имен полей разными программистами увеличивает вероятность непопадания запроса в кеш, следовательно возрастание жестких разборов. Тут тоже, ИМХО, палка о двух концах.
← →
Anatoly Podgoretsky © (2007-11-02 11:02) [116]Как правило после замены звездочки списком полей наступает твой пункт разбор правильности имен полей и принадлежности их таблице, не обязательно, но обычно сервера и компиляторы работают по шаблонам, нужен, не нужен шаг, но он выполняется.
На разборку запрос поступает после его подготовки к разбору, то есть никаких звездочек. После разбора проверка в кеше, потом построение плана, если необходимо.
← →
Sergey13 © (2007-11-02 11:08) [117]> [116] Anatoly Podgoretsky © (02.11.07 11:02)
> После разбора проверка в кеше
А помоему наоборот. Иначе чем объяснить то, что в кэш не попадают одинаковые запросы написанные в разных регистрах (даже отдельные символы).
ЗЫ: На всякий случай - я в основном про оракл.
← →
Игорь Шевченко © (2007-11-02 11:14) [118]За SELECT * убивать надо пожизненно.
← →
Anatoly Podgoretsky © (2007-11-02 11:37) [119]> Sergey13 (02.11.2007 11:08:57) [117]
А я в основном про другие сервера, видимо Оракл регистро-чувствителен
← →
Игорь Шевченко © (2007-11-02 12:05) [120]
> Иначе чем объяснить то, что в кэш не попадают одинаковые
> запросы написанные в разных регистрах (даже отдельные символы).
>
Orcale cursor sharing algorithm is case sensitive
Страницы: 1 2 3 4 вся ветка
Форум: "Прочее";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];
Память: 0.71 MB
Время: 0.044 c