|
|
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
У меня в команде появилось 2 программиста новых, и сейчас мои гуру только и занимаются тем что оптимизируют их "SQL-код" :) Я предлагаю сделать большой пост для начинающих разработчиков под Оракл с заповедями, я думаю это будет интересно.... softbuilder, killed, .dba, Scott Tiger - я думаю вы меня поддержите. А потом переработать и попросить администрацию этого сайта выложить статью. И так я начинаю...приосоединяйтесь: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2003, 21:30:44 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
Я бы еще добавил. Длина транзакции должна быть такой, какой нужно (слишком много нот, дорогой Моцарт - ровно столько, сколько нужно, ваше величество). Лишние коммиты в середине транзакции успокаивают администратора и сегменты отката, но приводят к усложнению логики приложения и повышению вероятности snapshot too old. Особенно на 9, где сегменты отмены ориентируются на время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2003, 09:50:19 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
1. replace('ъ','ь') 2. Явно назвай все констрейнты (возможное послабление - not null). 3. Явно называй все индексы. 4. За названия объектов prihod, rashod, lagerbereiche, st_pr_q_val_sum_updt тебя убьют. 5. За DDL как часть боевого кода тебя убьют. 6. Не вылезай за пределы своей схемы. 7. Не создавай индексов без нужды. 8. Создавай индексы, если это необходимо. 9. Комментируй таблицы, триггеры и процедуры. Ещё подумаю, напишу :) P.S. Ну... - за наименьший кост! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2003, 10:24:59 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
Вот ещё: Во всём нужно знать меру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2003, 10:27:20 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
Если в чем не уверен, спроси у DBA Если DBA в наличии не имеется, goto www.sql.ru :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2003, 11:05:42 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
Написал SQL, посмотри план. Если в запросе больше одной таблицы - посмотри обязательно. Если в запросе больше трех таблиц - запрос изначально написал не самым быстрым способом. Смотри план и меняй запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2003, 14:26:07 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
>Если DBA в наличии не имеется, goto www.sql.ru :)) Я плакалЪ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2003, 14:41:49 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
Я вообще не уверен (если что - поправьте), но по-моему лучше использовать не прямые объявления типов а конструкции вида Код: plaintext 1. После изменения структуры таблиц, код трогать не надо будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2003, 15:34:22 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
1. Строй запрос таким образом, что-бы он сам хватал индексы, а не указывай в HINT по какому индексу идти. (Завтра какой нибудь мудило индексы попериименовывает и пойдет задупление). 2. Названия таблиц, полей и переменных должы быть каким либо образом стандартизированны. 3. Все процедуры и ф-ции выноси в отдельные пакеты, объединяя их по смыслу. 4. Коментируй код!!! Я как-то глянул чужой код - чуть не обписался с испугу. С тех пор сам стал код коментировать. 5. Нужно вести историю каждого пакета - Кто создал, кто поменял, с какой целью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2003, 13:31:47 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
Очень многие грешат при написании SQL-запросов, строя запрос с указанием конкретных значений во фразе WHERE , что не даёт возможности повторного использования готового разобранного запроса. Код: plaintext P.S. to Vladimirgs: Если ты поднял эту тему, тогда доводи её до ума и помести в FAQ Oracle. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2003, 14:21:55 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
>!!! Значения нужно передавать в запросы через bind-переменные !!! согласен конечно же, но не стоит думать, что это универсальный постулат. Например в DSS, где время парсинга несоизмеримо меньше времени, затрачиваемого на получение результата, использование литералов может дать лучшие планы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2003, 14:52:29 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
"Например в DSS, где время парсинга несоизмеримо меньше времени, затрачиваемого на получение результата, использование литералов может дать лучшие планы" Это можно указать, как исключение из заповедей :) Как я понимаю разговор ведь идёт о том что приходит лох и хочет писать приложения с запросами. Должен-же он знать основы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2003, 14:58:14 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
Динамический SQL доведёт тебя до конца. Йо-хо-хо и всё такое :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2003, 15:26:00 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
Пособие по написанию ПРАВИЛЬНОГО кода: http://mindprod.com/unmain.html Написано на базе жавы, но 98% подойдет и к скулу. ЙЙ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2003, 16:52:56 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
Я бы еще добавил, полностью перечислять все поля в которые ложатся значения в инсертах... Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2003, 18:30:43 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
Ну и до кучи - в селектах. Знаю одну систему, есть в том числе и оракловая версия, - так вот, там используется следующая идеология - клиентское приложение делает несколько select * from tableX, а потом делает соединение и отбор нужных данных на клиенте. Система стоит более EUR 100000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2003, 18:34:55 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
И тут-же вопрос "почему ?" для следующих высказываний: 3. Минимизируй использование функций во въюхах. 5. Въюха + въюха+.....+въюха = смерть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 09:57:13 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
>И тут-же вопрос "почему ?" для следующих высказываний: >5. Въюха + въюха+.....+въюха = смерть. ...это тоже что нормализация структуры данных <=> смерть! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2003, 13:17:18 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
а где Commit писать. на клиенте или сервере объясните пожалуйсиа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2003, 19:14:15 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
Тема съехала....слишком мало для FAQ, неужто иссяк источник добрых знаний? Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2003, 12:56:50 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
2acidbaba 1. Строй запрос таким образом, что-бы он сам хватал индексы, а не указывай в HINT по какому индексу идти. (Завтра какой нибудь мудило индексы попериименовывает и пойдет задупление). не согласен в КОРНЕ, 1.чаще мудилы проводять UPGRADE сервера, после чего все планы запросов идут на х.з.к. это бывает чаще чем твои индексы переименовывают. 2.нефиг мудилам давать права на изменение объектов твоей схемы)))) 3.если 2-е невозможно, убивать мудил за такие приколы)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2003, 13:31:03 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
что стоит писать русское сообщение на навозможность заблокировать запись, да и вообще не забывать про триггер ON_LOCK. Пользователь боится английского языка и кодов ошибок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2003, 13:43:55 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
В системе должна быть 1(одна) функция расчета НДС. желательно хранимая, а еще желательней, чтобы это был пакет, с набором функций, реализующих полный набор возможных операций по расчету или вычислению оного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2003, 14:00:27 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. shvs, НДС не всегда нужно считать, это слишком конкретный пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2003, 14:06:37 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
Ой г-да вашими бы устами да мёд пить. Развлечение это. Пока сам на все мины не наступишь ничего из тебя не выйдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2003, 14:24:40 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
15. Прочти документацию прежде чем сделать какую-нибудь глупость ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2003, 15:54:14 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
16. Всегда слушай DBA - он мудрый человек 17. Умей рисковать и не слушай DBA. Все DBA трусы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2003, 16:01:58 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
И все таки! Можно поподробнее для господ с бронепоезда.. :) > 5. Въюха + въюха+.....+въюха = смерть. Что имеется ввиду? Вызов вьюхи из вьюхи и еще раз из вьюхи? Или join большого кол-ва вьюх? Или и то и другое? Проблема в том, что нужно тебе из вьюхи 2 поля, а т.к. по сути она является подзапросом в поле From, сначала запросятся все ее поля, а не нужные тебе 2? Или имеется ввиду нечто другое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2003, 17:54:16 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
Не верь плану - проверяй на реальных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2003, 17:33:02 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
Podumai!!!!! ============ > 1.03. Ура! Нам предложили крупный контракт на постройку 12-этажного > жилого дома. У всех бурный энтузиазм. Выпили на радостях 2 ящика пива. > > 2.03. Заказчику не нравится выражение "как только, так сразу". Требует назвать конкретные сроки. Темный, ничего не смыслит в высоких технологиях. > > 3.03. Обсуждали сроки. Выпили 3 ящика пива. Петрович говорит, что тут > всей работы на 4 месяца. Значит, на самом деле 8. В итоге в контракте записали 12, хотя раньше, чем за 16, вряд ли управимся. > > 6.03. Петрович пошел сдавать бутылки. > > 8.03. Отмечаем 8 Марта. Женщин у нас в фирме нет, так что праздник > никто не портит. > > 2.04. Петрович говорит, что пора начинать работать. Сговорились они, > что ли? Обнесли площадку забором и повесили красивые плакаты "Строительство ведет компания "Аllstrоу" (www.аllstrоу.ru)". С чувством выполненного долга играем в Quаkе. > > 20.04. Пришел заказчик, интересовался, как дела. Посадили его за Quаkе > и позволили нас всех обыграть. > > 21.04. Обсуждали проект. Сидоров предлагает крупноблочную архитектуру. Петрович настаивает, что все надо строить по старинке, из кирпича, не по-ламерски. Самый радикальный проект предложил Алекс: построить несколько десятков деревянных коттеджей и потом соединить их подземными туннелями. На Западе сейчас так модно. Напомнили ему, что заказчик требует именно 12-этажный дом. Пытались решить вопрос дуэлью в Quаkе. Алекса с его коттеджами завалили сразу, но между Петровичем и Сидоровым вышла ничья. В итоге каждый будет строить по своему плану, а потом попытаемся все это соединить, чтоб не рухнуло. > > 30.04. Первый этаж готов! Показали его заказчику. Он интересовался, > почему в разных комнатах разная высота потолков, почему из стен вываливаются кирпичи и почему в доме нет подъезда, а влезать приходится через окно. Объяснили ему, что это специальные ограничения демо-версии. Уходим на праздники, гордые собой. > > 10.05. Петрович протрезвел первым и долго ругался. Мы думали, что > Алекс выпил все пиво. Оказалось хуже: мы забыли про фундамент. В проекте он, конечно, описан, но ведь документацию читают только ламеры. > > 11.05. Ломали первый этаж. Обидно, блин. > > 11.07. Работаем. Петрович достраивает второй этаж, Сидоров - пятый. > Алекс отгрохал шахту лифта до девятого этажа, она в сильный ветер подозрительно качается. Временно поставили деревянные подпорки. > > 17.07. Алекс строит чердак и крышу. На земле. Потом поднимем краном. > > 13.08. У Сидорова не стыкуются панели. Щель больше метра. Сидоров > позвал Петровича, но тот заявил, что у него своих дел по горло и вообще без знания внутренней архитектуры панелей ничего сделать нельзя. > > 14.08. Разломали несколько панелей, чтобы Петрович мог изучить > внутреннюю архитектуру. Петрович ругается, кричит, что проектировщики панелей - полные ламеры. > > 17.08. Петрович заделал дыру. Правда, панели при этом перекосились, но > это уже мелочи. Проводку из обеих панелей пришлось вывести наружу и связать узлом. Петрович замотал узел изолентой и уверяет, что будет работать, если только дождь не пойдет. > > 1.09. Стройкомбинат выпустил новую версию панелей, улучшенной > прочности и утепленности, со встроенными стенными шкафами. Правда, ни по форме, ни по размеру они не совместимы с предыдущими и в три раза тяжелее. На какую архитектуру они вообще рассчитывают, эти комбинатские? > > 16.09. Прибежал Алекс, обуреваемый идеей. Предлагает сделать все окна > в доме изменяемого размера. Говорит, заказчик будет тащиться. Сказали ему, чтоб не выпендривался. > > 2.10. Петрович добрался до пятого этажа. Горд собой. Обратили его > внимание на тот факт, что его стена наклонена под углом 40 градусов. Он ругался, кричал, что мы ламеры и ничего не понимаем. Потом обещал подумать. > > 3.10. Приходил заказчик. Спросил, почему стена наклонена под углом 40 градусов. Объясняли ему про силу Кориолиса. Он все выслушал, потом сказал, что он, конечно, в строительном деле ничего не смыслит, но у него по соседству точно такой же дом, и там стена прямая. Блин. Потом этот идиот Алекс ляпнул при нем про свои изменяемые окна. Заказчик, естественно, загорелся и настаивает, чтоб делали именно так. Дважды блин. > > 4.10. Спросили Алекса, придется ли все разбирать ради его окон. Он уверяет, что нет - будто бы и у стандартных панелей есть такая недокументированная функция. > > 5.10. Петрович признал, что со стеной действительно имеется проблема. Говорит, что неправильно положил какой-то кирпич. Но чтобы понять, какой именно, надо перебрать их все. Проще все снести и построить заново. > > 6.10. Убеждали Петровича, что построить все заново из кирпича он уже > не успеет. Демонстрировали ему расчеты на калькуляторе. Петрович ругался, кричал, что калькулятор придумали ламеры. Потом все-таки согласился строить из панелей и ушел с горя в запой. > > 8.10. Ломали кирпичную часть. Попутно повредили панельную. Вся > постройка скрипит и угрожающе шатается. Укрепили деревянными подпорками и пошли играть в Quаkе. > > 17.10. Петрович вышел из запоя. Работаем. > > 7.11. Празднуем 7 Ноября - или как оно там теперь называется? > Коммунистов у нас в фирме нет, так что праздник никто не портит. > > 15.11. Вспомнили, что у нас кран достает только до 8 этажа. Послали Сидорова доставать новый кран. Играем в Quаkе. Алекс замочил Петровича. Растет смена! > > 24.11. Вернулся Сидоров. Кран не достал, зато достал крутой > экскаватор. Предлагает вырыть глубокую шахту и построить дом не в высоту, а в глубину. Говорит, что нигде в контракте не сказано, что 12 этажей должны быть над поверхностью. Еле отговорили. > > 25.11. Устроили мозговой штурм по проблеме крана. На последней бутылке пива нашли решение. Бросили основное строительство. Строим рядом 4-этажный дом. Потом втащим наш кран ему на крышу. > > 25.12. Празднуем католическое Рождество. Католиков у нас в фирме нет, > так что праздник никто не портит. > > 14.01. Ничего не помню. Голова болит. Мужики, какой сейчас год? > > 2.02. Ну, кажется, наконец-то достраиваем 12-й этаж. Завтра будем прилаживать сверху чердак и крышу, что соорудил Алекс. > > 3.02. Алекс - ламер. Крыша регулярно съезжает. Пока подперли краном. Думаем, что делать дальше. > > 4.02. Алекс доказывает, что он не виноват. Просто 12 этажей Сидорова > на 4 метра выше и на 5 метров шире, чем 12 этажей Петровича. Выяснилось, что они строили из разных панелей. Но Алекс все равно ламер, поскольку его крыша не подходит по размеру ни одному из вариантов. Его шахта лифта, кстати, тоже. > > 5.02. Латали, укрепляли и наращивали крышу. Петрович говорит, что > будет держаться, если снег не пойдет. > > 7.02. Снег пошел. > > 10.02. Соорудили крышу из фанеры, покрасили под жесть. Будем > надеяться, заказчик не заметит. > > 11.02. Тестировали лифт. Его остановки приходятся между этажами, но выбраться из кабины можно. На четных этажах ползком, на нечетных - подтягиваясь. Не забыть описать это в документации. > > 12.02. А вообще-то лифт ездит крайне медленно. Петрович ругает всех ламерами и собирается заняться оптимизацией. > > 13.02. Петрович оптимизировал лифт. Тот разогнался, пробил крышу и > улетел в неизвестном направлении. Хорошо, что крыша фанерная, и чинить будет легко. После этого шахта лифта рухнула. Вспомнили, что так и не заменили деревянные подпорки на что-нибудь более прочное. Ничего. Ходить пешком полезно. > > 15.02. Идут отделочные работы. Почему-то куда-то исчезают маляры и штукатуры. Договорились, чтоб прислали еще. > > 17.02. Выяснилось, что из-за ошибки Сидорова двери на этажах со > второго по шестой открываются только на вход. В результате на этих этажах скопилось множество маляров и штукатуров, которые не могут выйти обратно. Сидоров обещал все поправить. Пока кормим маляров и штукатуров через форточки. > > 20.02. Алекс, наконец, доделал свои изменяющиеся окна. Тестировали. Выяснилось, что при изменении размера окна в нем бьются стекла. Кроме того, наблюдается ряд побочных эффектов. Например, в гостиную одной квартиры может въехать унитаз и ванна из другой. Также иногда исчезают двери и осыпаются балконы. Жаловаться на стройкомбинат бесполезно - они скажут, что нечего пользоваться недокументированными > функциями. > > 21.02. Приходил заказчик. Спрашивал, нельзя ли внести в проект > небольшие изменения. В частности, вместо 12-этажного дома построить поселок из деревянных коттеджей, соединенных туннелями. Он прочитал, что на Западе сейчас так модно. Нейтрализовали Алекса прежде, чем тот успел открыть рот, и вежливо, но твердо объяснили заказчику, что он не прав. > > 22.02. Балконы продолжают сыпаться, хотя изменяемые окна мы больше не трогали. Видимо, это какой-то независимый глюк. Какой, искать уже поздно, так что просто отодрали оставшиеся балконы от греха. Попробуем объяснить заказчику, что это сделано в целях оптимизации. > > 23.02. Праздновали 23 февраля. Военных у нас в фирме нет, так что > праздник никто не портил. Женщин тоже нет, так что подарков нам никто не дарил. Обидно. > > 25.02. Алекс попытался доделать свои окна. В результате половина из > них ужалась до нулевого размера и обратно не разворачивается. Сказали ему, чтоб больше не выпендривался, а то будет еще хуже. > > 27.02. Вспомнили, что так и забыли сделать подъезд. Размышляли, не > рухнет ли дом, если прорубить его сейчас. Сидоров сказал, что лучше не рисковать. Петрович обозвал его ламером и согласился. Не забыть описать в документации вход через окно как особенность дизайна. > > 1.03. К-как первое марта?! Откуда?! Вчера же еще... Блин. Кто ж знал, > что в этом ламерском феврале 28 дней! Выходит, сдача объекта - не через неделю, а послезавтра?! > > 2.03. Аврал. Работаем 24 часа в сутки, не просыпаясь. > > 3.03. Убедили заказчика, что нам нужен еще день для финального тестирования. М-да, ну мы вчера и наработали... А в общем, не все так страшно. Ну что с того, что некоторые двери находятся в полу или в потолке, либо ведут с десятого этажа прямиком на улицу, в некоторые квартиры в принципе невозможно попасть, санузел кое-где совмещен с кухней, в половине дома нет воды, в другой половине - электричества, канализация обрывается на шестом этаже, а лестницу между восьмым и девятым пришлось сделать веревочной? Главное - провести заказчика правильным маршрутом. И еще - успеть до завтра развесить на месте исчезнувших окон картинки с изображением заоконных пейзажей... > > 4.03. Yes! Yes! Мы сделали это! Отмечаем сдачу объекта. Я пью мало, > мне надо еще успеть уволиться, прежде чем эта хренотень рухнет к чертовой матери... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2003, 11:38:19 |
|
||
|
Заповеди девелопера
|
|||
|---|---|---|---|
|
#18+
Пришел "иксперт" и все опошлил :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2003, 13:23:17 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1990109]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
180ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
84ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 514ms |

| 0 / 0 |
