Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.02;
Скачать: CL | DM;

Вниз

Музыкой навеяло...   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.71 MB
Время: 0.032 c
1-1189420172
Kuzmich_Delphi
2007-09-10 14:29
2007.12.02
фоновая картинка под ползунок


15-1194000098
de.
2007-11-02 13:41
2007.12.02
Cursor


15-1193777739
Принтер
2007-10-30 23:55
2007.12.02
Бытовые струйники энд лазерные притеры


15-1194093107
Булат Шакиров
2007-11-03 15:31
2007.12.02
Бушков А.А. как историк ;)


5-1163941996
QuerySkin
2006-11-19 16:13
2007.12.02
Какие скины выбрать?