Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
11-1179477505
=BuckLr=
2007-05-18 12:38
2007.12.02
Вопрос по consoleOut


2-1194193488
WFS
2007-11-04 19:24
2007.12.02
Как создать компонент Edit динамически?


2-1194343616
Sergl
2007-11-06 13:06
2007.12.02
Номер коннекта в сокетах


15-1193930755
MetalFan
2007-11-01 18:25
2007.12.02
что произошло с моей анкетой?!


2-1194433943
LexXL
2007-11-07 14:12
2007.12.02
вписать картинку в квадрат





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский