powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Заповеди девелопера
25 сообщений из 32, страница 1 из 2
Заповеди девелопера
    #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
Заповеди девелопера
    #32130648
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы еще добавил. Длина транзакции должна быть такой, какой нужно (слишком много нот, дорогой Моцарт - ровно столько, сколько нужно, ваше величество). Лишние коммиты в середине транзакции успокаивают администратора и сегменты отката, но приводят к усложнению логики приложения и повышению вероятности snapshot too old. Особенно на 9, где сегменты отмены ориентируются на время.
...
Рейтинг: 0 / 0
Заповеди девелопера
    #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
Заповеди девелопера
    #32130669
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот ещё:

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

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

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


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


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


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

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

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

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

http://mindprod.com/unmain.html

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

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

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

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

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

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

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

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


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


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