Добавить в избранное   Сделать стартовой   Главная   E-mail   Форум   Мой блог 
   
Cертификации

Errors

ETL

FAQ (по темам)

GIS

Web

wiki

Администрирование

Безопасность

Книги
Oracle, ...

Новости

ОС

Программирование

Проектирование БД

Производительность

Скачать

Советы

Тестирование

Установка

FAQ - по базам данных
FAQ - по базам данных
Установка СУБД
Oracle
Sybase
MySQL
PostgreSQL
MS SQL Server
Interbase, Firebird
Другие DB
Администрирование
Oracle
MySQL
Sybase
PostgreSQL
MS SQL Server
Interbase, Firebird
IBM DB2
Другие DB
Проектирование БД
Статьи
ETL
Теория БД
ErWin
Designer 2000
PowerDesigner
Хранилища данных
CASE средства
OLAP
Бизнес - анализ (BI)
Производительность
Oracle
MSSQL
Interbase, Firebird
IBM DB2
MySQL
PostgreSQL
SYBASE
Безопасность БД
Oracle
MS SQL Server
Инъекция SQL
Программирование
Transact-SQL
PL/SQL
C++
XML
SQL
PostgreSQL
MDX
Java
VBA Excel
Книги по базам
Oracle
Заказ книг
ОС
Установка и настройка
UBUNTU
ОС
Установка и настройка
UBUNTU
FAQ
FAQ - по базам данных
Главная arrow SQL arrow Правил разработки SQL программ

Правил разработки SQL программ

Печать E-mail
Оглавление
Правил разработки SQL программ
Страница 2
Страница 3
Страница 4
Страница 5
Страница 6
Страница 7
Страница 8
Страница 9
Страница 10
Страница 11
 
Правил разработки SQL программ
 
 1.0 Введение

  Назначением этого документа явлется определение требований и правил разработки SQL программ в нашем подразделении, соблюдение которых позволит создавать качественные приложения. А также обратить внимание на стиль написания программ, поскольку правильный стиль облегчает процесс поддержки программ.

Разработчикам следует принимать во внимание, что в языках четвертого поколения (как и в языках третьего поколения) первый и очевидный вариант программы не обязательно является лучшим.

Особое внимание надо обратить на необходимость придерживаться определенного стиля при написании SQL операторов, помимо всего прочего это позволит программам воспользоваться преимуществом SQL кэша в Oracle V7. Седьмая версия Oracle имеет некий SQL кэш, в котором содержатся разобранные (parsed) SQL запросы. Oracle определяет находится ли запрос в кэше с помощью не чувствительного к регистру сравнения.

Следует иметь ввиду, что возможет просмотр кода, который используется для доступа к БД на сервере с помощью SQLtrace, с последующей обработкой вывода программой tkprof.


 
 

 

1.0 Введение

2.0 Стиль написания SQL операторов

2.1 Основные положения

2.2 Ключевые слова SQL

2.3 Константы и переменные

2.4 Внешние объединения (outer joins)

2.5 Синонимы таблиц (aliases)

2.6 Порядок условий в предложении WHERE

3.0 Запросы к БД

3.1 Порядок перечисления таблиц в предложении FROM

3.2 Непреднамеренное запрещение индексов

3.3 Намеренное запрещение использования индексов

3.4 Различные варианты написания запросов

3.5 Использование оператора EXISTS

3.6 Не делайте ненужных объединений (joins)

3.7 Ресурсоемкие операции

3.8 Используйте для тестов реальные данные

3.9 Применение оператора !=

3.10 Использование Oracle trace

3.11 Управление курсорами Oraclе

3.12 Правило 10,15,20 процентов

4.0 Оператор INSERT

4.1 Применение * в операторе INSERT

5.0 Оператор UPDATE

5.1 Согласованные изменения

6.0 Оптимизация запросов

6.1 Доступ к таблицам

6.2 Индексы и NULL значения

6.3 Индексы и предикаты 'NOT ='

6.4 Предложение GROUP BY

6.5 Использование нескольких индексов

6.6 Когда не выполняется слияние индексов

6.7 Подавление слияния индексов

6.8 Составные индексы

6.9 Оптимизация запросов с OR

6.10 Не соотнесенные подзапросы

6.11 Соотнесенные подзапросы

Приложение A Весовые коэффиценты предикатов в запросах

Приложение B Структура таблиц, используемых в примерах

Приложение C Correlated updates and PL/SQL.

Приложение D Guidelines for outer join syntax

Приложение E Десять правил создания быстро выполняющихся запросов

Приложение F EXPLAIN Facility

 

 

2.0 Стиль написания SQL операторов

2.1 Основные положения

SQL операторы следует писать таким образом, чтобы облегчить процесс их чтения, понимания и исправления. Логически обособленная последовательность операторов должна находиться в отдельном файле.

1. Операторы следует выравнивать так, чтобы текст программы они выглядел аккуратно.
2. Каждое из запрашиваемых в SELECT полей должно быть на отдельной строке.
3. Каждая из таблиц, перечисленных в FROM должна быть на отдельной строке.

2.2 Ключевые слова SQL

1. Ключевые слова Oracle следует писать ПРОПИСНЫМИ БУКВАМИ
2. Перечисленные ниже ключевые слова следует писать с новой строки:

SELECT
INTO
FROM
WHERE
AND/OR
GROUP BY
HAVING
CONNECT BY
FOR UPDATE OF
ORDER BY

3. Все ключевые слова в пределах одного SQL оператора следует писать с одной и той же позиции. При использовании вложенных операторов SELECT их следует сдвигать внутрь предложения на позицию второго слова в предыдущей строке, например:

SELECT sal,
Job,
ename,
dept
FROM emp
WHERE sal > any
(SELECT sal
FROM emp
WHERE deptno = 30)
ORDER BY sal;

4. Строки, которые не начинаются с приведенных выше ключевых слов следует начинать с позиции второго слова в предыдущей строке, например:

SELECT ename,
dept
FROM emp

2.3 Константы и переменные

1. Константы, переменные и т.п. следует располагать с правой стороны от слов WHERE или HAVING.

SELECT ename
FROM emp
WHERE empno = '1232'

Or

SELECT ename
FROM emp
WHERE empno = :1

2.4 Внешние объединения (outer joins)

Поля, которые вовлекаются в операцию внешнего объединения (outer join) следует писать с правой стороны от слов WHERE или HAVING.

SELECT ename
FROM emp e,
dept d
WHERE e.empno = d.empno(+)

2.5 Синонимы таблиц (aliases)

Синонимы для таблиц следует применять во всех запросах, в которых упоминается больше одной таблицы в предложении FROM. Использование синонимов (alias) в таких запросах ускоряет операцию разбора SQL оператора ядром Oracle, поскольку уменьшает рекурсию запросов.

SELECT count(*)
FROM oe o,
oe_link l,
oe_link_name n
WHERE o.oe = l.oe
AND l.name = n.name

Отметьте, что синонимы o, l, n используются в предложении WHERE.
2.6 Порядок условий в предложении WHERE

В целях облегчения читаемости и понимания запроса в предложении WHERE следует сначала писать условия объединяющие таблицы, а потом условия ограничивающие выборку.
3.0 Запросы к БД
3.1 Порядок перечисления таблиц в предложении FROM

Порядок перечисления таблиц в предложении FROM имеет значение для оптимизатора, когда оптимизатор выбирает способ выполнения запроса. Оптимизатор работает следующим образом. Он просматривает предложения WHERE и присваивает таблицам определенный вес, основываясь на типе предиката, т.е. field = 'const' или field = field(+). Затем он выбирает таблицу с наименьшим весом и делает ее управляющей (driving) таблицей. Однако, здесь есть один тонкий момент, если несколько таблиц получают одинаковый вес и он является наименьшим, то оптимизатор выбирает в качестве управляющей ту таблицу, которая стоит последней в предложении FROM.

Список весовых коээфициентов предикатов приведен в приложении A.


 
 
« Пред.   След. »
Взаимосвязанные статьи
     

Последние добавленные статьи
Поиск
Ссылки
Главная
Скачать
Курсы
Роль АБД (SYSDBA)
Карта сайта
Автостекла
Контакты
Войти на сайт
Популярные статьи
Online - тесты
1Z0-042
Rambler's Top100 МЕТА - Украина. Рейтинг сайтов хостинг от freehost.com.ua

Все права защищены.SYSDBA 2010 | Если у Вас есть хороший материал пришлите его нам.