Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Заповеди девелопера / 25 сообщений из 32, страница 1 из 2
31.03.2003, 21:30:44
    #32130551
Vladimirgs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
У меня в команде появилось 2 программиста новых, и сейчас мои гуру только и занимаются тем что оптимизируют их "SQL-код" :) Я предлагаю сделать большой пост для начинающих разработчиков под Оракл с заповедями, я думаю это будет интересно.... softbuilder, killed, .dba, Scott Tiger - я думаю вы меня поддержите. А потом переработать и попросить администрацию этого сайта выложить статью.

И так я начинаю...приосоединяйтесь:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 1 . Будь проще - используй альясы.

 2 . Селекты старайся писать во фром.

 3 . Минимизируй использование функций во въюхах.

 4 . Побольше процедур нужных и разных.

 5 . Въюха + въюха+.....+въюха = смерть.

 6 . За временные таблицы тебя не убъют.

 7 . Следи за  "мусором" .

 8 .  "Что это? номер кредитной карточки?" ....нет это кост:)). За наименьший кост.

 9 . Commit.
...
Рейтинг: 0 / 0
01.04.2003, 09:50:19
    #32130648
AI
AI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
Я бы еще добавил. Длина транзакции должна быть такой, какой нужно (слишком много нот, дорогой Моцарт - ровно столько, сколько нужно, ваше величество). Лишние коммиты в середине транзакции успокаивают администратора и сегменты отката, но приводят к усложнению логики приложения и повышению вероятности snapshot too old. Особенно на 9, где сегменты отмены ориентируются на время.
...
Рейтинг: 0 / 0
01.04.2003, 10:24:59
    #32130668
Scott Tiger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
1. replace('ъ','ь')
2. Явно назвай все констрейнты (возможное послабление - not null).
3. Явно называй все индексы.
4. За названия объектов prihod, rashod, lagerbereiche, st_pr_q_val_sum_updt тебя убьют.
5. За DDL как часть боевого кода тебя убьют.
6. Не вылезай за пределы своей схемы.
7. Не создавай индексов без нужды.
8. Создавай индексы, если это необходимо.
9. Комментируй таблицы, триггеры и процедуры.

Ещё подумаю, напишу :)

P.S. Ну... - за наименьший кост!
...
Рейтинг: 0 / 0
01.04.2003, 10:27:20
    #32130669
Scott Tiger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
Вот ещё:

Во всём нужно знать меру.
...
Рейтинг: 0 / 0
01.04.2003, 11:05:42
    #32130708
[IPT]-Said
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
Если в чем не уверен, спроси у DBA
Если DBA в наличии не имеется, goto www.sql.ru :))
...
Рейтинг: 0 / 0
01.04.2003, 14:26:07
    #32130972
Костя_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
Написал SQL, посмотри план.
Если в запросе больше одной таблицы - посмотри обязательно.
Если в запросе больше трех таблиц - запрос изначально написал не самым быстрым способом. Смотри план и меняй запрос.
...
Рейтинг: 0 / 0
01.04.2003, 14:41:49
    #32131003
killed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
>Если DBA в наличии не имеется, goto www.sql.ru :))

Я плакалЪ
...
Рейтинг: 0 / 0
01.04.2003, 15:34:22
    #32131051
shane54
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
Я вообще не уверен (если что - поправьте), но по-моему лучше использовать не прямые объявления типов а конструкции вида

Код: plaintext
1.
v_переменная : таблица.столбец%TYPE
v_переменная : таблица%ROWTYPE


После изменения структуры таблиц, код трогать не надо будет.
...
Рейтинг: 0 / 0
02.04.2003, 13:31:47
    #32131782
acidbaba
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
1. Строй запрос таким образом, что-бы он сам хватал индексы, а не указывай в HINT по какому индексу идти. (Завтра какой нибудь мудило индексы попериименовывает и пойдет задупление).
2. Названия таблиц, полей и переменных должы быть каким либо образом стандартизированны.
3. Все процедуры и ф-ции выноси в отдельные пакеты, объединяя их по смыслу.
4. Коментируй код!!! Я как-то глянул чужой код - чуть не обписался с испугу. С тех пор сам стал код коментировать.
5. Нужно вести историю каждого пакета - Кто создал, кто поменял, с какой целью.
...
Рейтинг: 0 / 0
02.04.2003, 14:21:55
    #32131850
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
Очень многие грешат при написании SQL-запросов, строя запрос с указанием конкретных значений во фразе WHERE , что не даёт возможности повторного использования готового разобранного запроса.


Код: plaintext
!!! Значения нужно передавать в запросы через bind-переменные !!!


P.S. to Vladimirgs: Если ты поднял эту тему, тогда доводи её до ума и помести в FAQ Oracle.
...
Рейтинг: 0 / 0
02.04.2003, 14:52:29
    #32131892
killed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
>!!! Значения нужно передавать в запросы через bind-переменные !!!

согласен конечно же, но не стоит думать, что это универсальный постулат.
Например в DSS, где время парсинга несоизмеримо меньше времени, затрачиваемого на получение результата, использование литералов может дать лучшие планы
...
Рейтинг: 0 / 0
02.04.2003, 14:58:14
    #32131897
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
"Например в DSS, где время парсинга несоизмеримо меньше времени, затрачиваемого на получение результата, использование литералов может дать лучшие планы"

Это можно указать, как исключение из заповедей :)

Как я понимаю разговор ведь идёт о том что приходит лох и хочет писать приложения с запросами. Должен-же он знать основы.
...
Рейтинг: 0 / 0
02.04.2003, 15:26:00
    #32131922
Scott Tiger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
Динамический SQL доведёт тебя до конца. Йо-хо-хо и всё такое :)
...
Рейтинг: 0 / 0
02.04.2003, 16:52:56
    #32132064
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
Пособие по написанию ПРАВИЛЬНОГО
кода:

http://mindprod.com/unmain.html

Написано на базе жавы, но 98% подойдет и
к скулу.

ЙЙ
...
Рейтинг: 0 / 0
02.04.2003, 18:30:43
    #32132192
antonprk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
Я бы еще добавил, полностью перечислять все поля в которые ложатся значения в инсертах...
Код: plaintext
1.
2.
INSERT INTO my_table (id, pole_one, pole_tow)
 VALUES( 1 ,'trali vali','tru-lala');
...
Рейтинг: 0 / 0
02.04.2003, 18:34:55
    #32132195
Scott Tiger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
Ну и до кучи - в селектах.

Знаю одну систему, есть в том числе и оракловая версия, - так вот, там используется следующая идеология - клиентское приложение делает несколько select * from tableX, а потом делает соединение и отбор нужных данных на клиенте. Система стоит более EUR 100000.
...
Рейтинг: 0 / 0
03.04.2003, 09:57:13
    #32132359
Виктор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
И тут-же вопрос "почему ?" для следующих высказываний:
3. Минимизируй использование функций во въюхах.
5. Въюха + въюха+.....+въюха = смерть.
...
Рейтинг: 0 / 0
03.04.2003, 13:17:18
    #32132639
alex123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
>И тут-же вопрос "почему ?" для следующих высказываний:
>5. Въюха + въюха+.....+въюха = смерть.
...это тоже что нормализация структуры данных <=> смерть!
...
Рейтинг: 0 / 0
25.04.2003, 19:14:15
    #32149299
Заповеди девелопера
а где Commit писать. на клиенте или сервере объясните пожалуйсиа
...
Рейтинг: 0 / 0
28.04.2003, 12:56:50
    #32150043
Vladimirgs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
Тема съехала....слишком мало для FAQ, неужто иссяк источник добрых знаний?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 10 . Не изобретай велосипед, вдруг это кто-нибудь писал.

 11 . Умей слушать постановщика.

 12 . Умей спорить.

 13 . Не занимайся ерундой. Не нужно ставить автомат на сливной бачек.
...
Рейтинг: 0 / 0
28.04.2003, 13:31:03
    #32150085
shvs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
2acidbaba
1. Строй запрос таким образом, что-бы он сам хватал индексы, а не указывай в HINT по какому индексу идти. (Завтра какой нибудь мудило индексы попериименовывает и пойдет задупление).

не согласен в КОРНЕ,
1.чаще мудилы проводять UPGRADE сервера, после чего все планы запросов идут на х.з.к.
это бывает чаще чем твои индексы переименовывают.
2.нефиг мудилам давать права на изменение объектов твоей схемы))))
3.если 2-е невозможно, убивать мудил за такие приколы))
...
Рейтинг: 0 / 0
28.04.2003, 13:43:55
    #32150104
Les
Les
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
что стоит писать русское сообщение на навозможность заблокировать запись, да и вообще не забывать про триггер ON_LOCK. Пользователь боится английского языка и кодов ошибок
...
Рейтинг: 0 / 0
28.04.2003, 14:00:27
    #32150122
shvs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
В системе должна быть 1(одна) функция расчета НДС.
желательно хранимая, а еще желательней, чтобы это был пакет, с набором функций, реализующих полный набор возможных операций по расчету или вычислению оного.
...
Рейтинг: 0 / 0
28.04.2003, 14:06:37
    #32150128
Scott Tiger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
Код: plaintext
1.
 14 . Умей говорить и писать так, чтобы тебя понял и коллега, и пользователь.


shvs, НДС не всегда нужно считать, это слишком конкретный пример.
...
Рейтинг: 0 / 0
28.04.2003, 14:24:40
    #32150149
Eter Panji
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заповеди девелопера
Ой г-да вашими бы устами да мёд пить.
Развлечение это.
Пока сам на все мины не наступишь ничего из тебя не выйдет.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Заповеди девелопера / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]