- Дипломы
- Курсовые
- Рефераты
- Отчеты по практике
- Диссертации
Язык структурированных запросов sql
Внимание: Акция! Курсовая работа, Реферат или Отчет по практике за 10 рублей!
Только в текущем месяце у Вас есть шанс получить курсовую работу, реферат или отчет по практике за 10 рублей по вашим требованиям и методичке!
Все, что необходимо - это закрепить заявку (внести аванс) за консультацию по написанию предстоящей дипломной работе, ВКР или магистерской диссертации.
Нет ничего страшного, если дипломная работа, магистерская диссертация или диплом ВКР будет защищаться не в этом году.
Вы можете оформить заявку в рамках акции уже сегодня и как только получите задание на дипломную работу, сообщить нам об этом. Оплаченная сумма будет заморожена на необходимый вам период.
В бланке заказа в поле "Дополнительная информация" следует указать "Курсовая, реферат или отчет за 10 рублей"
Не упустите шанс сэкономить несколько тысяч рублей!
Подробности у специалистов нашей компании.
Только в текущем месяце у Вас есть шанс получить курсовую работу, реферат или отчет по практике за 10 рублей по вашим требованиям и методичке!
Все, что необходимо - это закрепить заявку (внести аванс) за консультацию по написанию предстоящей дипломной работе, ВКР или магистерской диссертации.
Нет ничего страшного, если дипломная работа, магистерская диссертация или диплом ВКР будет защищаться не в этом году.
Вы можете оформить заявку в рамках акции уже сегодня и как только получите задание на дипломную работу, сообщить нам об этом. Оплаченная сумма будет заморожена на необходимый вам период.
В бланке заказа в поле "Дополнительная информация" следует указать "Курсовая, реферат или отчет за 10 рублей"
Не упустите шанс сэкономить несколько тысяч рублей!
Подробности у специалистов нашей компании.
Код работы: | K010432 |
Тема: | Язык структурированных запросов sql |
Содержание
Негосударственное образовательное учреждение высшего образования Московский технологический институт Факультет: Техники и современных технологий Кафедра: Информатики и автоматизации КУРСОВАЯ РАБОТА по дисциплине «Базы данных» на тему: «ЯЗЫК СТРУКТУРИРОВАННЫХ ЗАПРОСОВ SQL. ОПТИМИЗАЦИЯ ЗАПРОСОВ В SQL» Уровень образования: бакалавриат Направление: 230100 «Информатика и вычислительная техника» Профиль: «WEB разработка» Выполнил: Студент 5-го курса Форма обучения: заочная Иванов Иван Иванович Москва 2017 Оглавление ВВЕДЕНИЕ 3 1. Базы данных. Общие сведения 5 1.1. Классификация баз данных 6 1.2. СУБД 7 1.3. Создание БД 8 1.4. Требования, предъявляемые к БД 8 2. Язык структурированных запросов SQL 13 2.1. Создание таблиц 14 2.2. Редактирование данных 16 2.3. Выборка данных 18 3. Оптимизация SQL-запросов 20 3.1. Синтаксическая оптимизация 20 3.2. Семантическая оптимизация 21 3.3. Алгоритм работы оптимизатора 23 3.4. Порядок оптимизации запроса 25 3.5. Рекомендации по написанию запросов. 26 ЗАКЛЮЧЕНИЕ 30 СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 32 ВВЕДЕНИЕ В последнее время развитие техники и науки сопровождается большим количеством достижений во многих сферах, особенно изменения касаются области информационных технологий. Как можно наблюдать, на сегодняшний день существует целое множество компаний, акционерных обществ и банков, главная задача которых - это обработка и хранение информации. В таком случае потеря такой информации вероятнее всего приведет к потере дохода. Данная организация рабочей структуры явилась предпосылкой к развитию компьютерной техники и созданию для хранения данных электронных таблиц [13]. Одно из направлений в этой сфере - это автоматизация процессов, результатом которой в чаще всего выступает создание информационной системы. Подобная система может быть представлена либо в виде автоматизированной системы управления (АСУ), либо в виде автоматизированной информационной системы (АИС). В таком случае АСУ применяют для принятия конкретных решений или же формирования определенного воздействия на объект управления, а АИС используется для предоставления операторам системы и пользователям определенных данных, используемых в процессе их деятельности [14]. На сегодняшний день для эффективного, а, что немало важно, оперативного управления компаниями внедряются системы автоматизированного управления, которые базируются на базах данных (БД). Обычно под базой данных принято понимать объективную форму представления и организации комплекса данных (к примеру, расчетов или статей), которые систематизированы таким образом, что эти данные могут быть найдены и обработаны с помощью ЭВМ [1]. Очевидно, что тема применения БД является актуальной на сегодня, т.к. любая компания для хранения конфиденциальных данных, а также документооборота использует именно эту структуру. Таким образом, необходимо владеть определенными навыками для правильной работы с БД. Как раз для того и был создан язык структурированных запросов к БД – SQL, являющийся объектом исследования этой работы. Предмет исследования – запросы в SQL, а также их оптимизация. Цель работы: определить ключевые понятия языка, виды запросов, а также способы их оптимизации. Для достижения поставленной цели предстоит решить ряд задач: * проанализировать литературу по заданной теме; * определить основные понятия; * определить виды запросов; * привести способы оптимизации запросов; * подвести итоги проделанного исследования. В качестве основных источников для написания курсовой работы были использованы такие источники: Ганчаев М. «Основные понятия реляционных баз данных» и Выграненко М.А. «Базы данных». 1. Базы данных. Общие сведения Логично начать рассмотрение темы баз данных с определения ключевых понятий. Согласно ГОСТ 20886-85 «Организация данных в системах обработки данных» базой данных называется независимая от других программ совокупность данных, которые организованы в соответствии с определенными правилами, предусматривающими общие принципы описания, манипулирования и хранения данных. Для манипулирования данными используются специальные языки, задача которых заключается в формулировании запросов на поиск и обмен данными между прикладной программой и БД. Эти языки могут быть как самостоятельными, так и расширениями других языков. Еще одной важной составляющей является система управления базами данных (СУБД). В соответствии с [6] она является совокупностью программ и языковых средств, задачей которых является управление данными в БД, ведение БД и обеспечение ее взаимодействия с прикладными программами. На сегодняшний день задачи СУБД включают: * обеспечение минимальной избыточности данных; * обеспечение возможности представления внутренней структуры данных; * возможность быстрого поиска; * использование эффективных языков запросов к данным; * сохранение конфиденциальности и целостности хранимых данных [10]. Полный вариант СУБД содержит следующие элементы: * среда пользователя, позволяющая непосредственно управлять данными посредством клавиатуры; * алгоритмический язык для программирования прикладных систем обработки данных, реализованный в виде интерпретатора; * компилятор, который преобразует исходный код в исполняемый файл; * набор программ-утилит для возможности быстрого программирования некоторых операций, к примеру, для создания отчетов, форм, таблиц и пр. [13] 1.1. Классификация баз данных Классификация БД может быть проведена по нескольким признакам, к примеру: * по способу хранения данных: распределенные и централизованные; * по характеру хранимой информации: документальные и фактографические; * по структуре организации данных: реляционные (табличные БД), сетевые БД, иерархические. Основная задача любой базы данных — это хранение больших объемов данных, над которыми можно выполнять различные операции, применяя встроенные возможности программной среды, к примеру, выбирать конкретный набор данных по определенному условию, редактировать данные, создавать различные отчеты. На экране база данных может быть представлена такими способами: * в виде таблицы (традиционный способ); * в виде картотеки. Большинство БД по умолчанию применяют табличный формат. Одна из разновидностей БД - это реляционные БД, которые представляют собой несколько взаимосвязанных таблиц. Каждая таблица реляционной БД содержит в себе информацию об объектах определенного типа. Таблица характеризуется такими параметрами: строками (записями) и столбцами ( атрибутами или полями). Именно поля отвечают за характеристики представляемых объектов и в целом определяют структуру БД [16]. 1.2. СУБД Система управления БД в первую очередь служит для описания, обработки, а также управления структурами данных. Как видно из определения, ключевая функция СУБД - это именно управление. Под управлением данными обычно понимается их защита от несанкционированного доступа, поддержка многопользовательского режима работы, а также обеспечение согласованности и целостности данных. По факту, функции СУБД для пользователя остаются скрытыми. Это объясняется тем, что система создана максимально адаптированной к пользовательским потребностям, что дает возможность при наличии минимальных знаний освоить работу с базой данных. Обычно, в СУБД входят следующие компоненты: * компилятор – преобразователь программ в автономные исполняемые файлы; * интерпретатор – алгоритмический язык программирования; * интерфейс – пользовательская среда для работы помощью графического интерфейса; * набор утилит – средства для программирования рутинных операций (создание макросов) [3]. Любая СУБД поддерживает выполнение таких операций с данными: * добавление записей в таблицу; * обновление записей в таблицах; * удаление записей из таблицы; * поиск записей по конкретному условию. Для выполнения данных операций применяется механизм запросов. Результат запроса может быть по-разному представлен: * в виде перечня записей, которые были отобраны по заданному критерию; * в виде изменений в исходной таблице. Формирование запросов происходит на специальном языке, речь о котором пойдет в следующей главе этой работы [9]. 1.3. Создание БД Существует ряд ключевых этапов создания БД: * проектирование архитектуры БД – на таком этапе определяются все объекты и их атрибуты, хранящиеся в разрабатываемой БД; * проектирование структуры БД – на этом этапе решается вопрос о представлении БД – будет это одна таблица, или же несколько между собой связанных; * ввод структуры данных, а также описание типов данных полей всех таблиц БД; * ввод данных в БД; * манипулирование данными (сортировка, выборка, отчеты и пр.) [15]. Процесс разработки БД фактически представляет собой процесс интеграции данных. При этом необхдимо учитывать пользовательские требования. Т.к. мнения всех пользователей разнятся, их необходимо проанализировать и свести в единое представление, ложащееся в основу построения БД. Такое обобщение пользовательских требований носит название концептуальной модели базы данных. Концептуальная модель является информационным описанием предметной области с учетом всех логических взаимосвязей, поэтому ее другое название - инфологическая (информационно-логическая) модель [12]. 1.4. Требования, предъявляемые к БД При проектировании и разработке БД необходимо учитывать ряд требований: * целостность данных; * независимость данных; * непротиворечивость; * минимальная избыточность; * секретность и безопасность; * возможность ведения (удаления и добавления) и актуализации ( модификации, корректировки) данных; * высокая производительность; * минимальные затраты; * соблюдение стандартов. Требование целостности данных гарантирует тот факт, что в БД хранятся правильные данные. Это говорит о том, что соблюдены все логические условия, которые накладываются в ограничениях БД. Нарушение целостности возможно в результате некорректных действий со стороны пользователей, из-за ошибок в заложенном ПО или же в результате сбоя оборудования. В виде ограничений выступают специальные методы, которые определяют условия, которым должны соответствовать данные в БД. К примеру, один и тот же работник не может иметь два разных отчества и пр. Такие ограничения обычно называют законами БД. Выполнимость этих законов периодически проверяется СУБД. Чтобы избежать пользовательских ошибок при вводе или редактировании данных, применяют специальные средства контроля правильности. Иными словами, используются процедуры, которые проверяют принадлежность вводимых значений определенной области допустимых значений. К примеру, количество рабочих дней в рамках месяца не должно превышать общего количества дней в данном месяце. Еще одной причиной нарушения целостности данных выступает неудачное завершение транзакции. Под транзакцией здесь понимается некоторая неделимая последовательность операций над данными, выполняющаяся по одному запросу к БД. К примеру, операция перевода денег в банковской системе между счетами. Здесь важно последовательное выполнение нескольких операций. Для начала деньги снимаются с одного счета, изменяются данные по этому счету, затем деньги добавляются к другому счету и корректируются данные уже второго счета. Если при этом хотя бы одно действие завершается ошибкой, результат транзакции становится неверным. Таким образом, в задачи СУБД входит отслеживание хода выполнения транзакции от ее начала и до завершения. Если по какой-то причине хоть одна из операций не выполнилась, транзакция полностью отменяется. При этом происходит отмена всех изменений, которые произошли при выполнении транзакции. Для защиты от сбоев оборудования необхоимо предусматривать специальные средства. К примеру, сюда относятся программы резервного копирования и восстановления данных. Данные программы автоматически фиксируют любые изменения внесенные в БД (создается файл корректур). Разные СУБД в какой-либо мере располагают средствами обеспечения целостности данных. В обратном случае разработка таких средств ложится на плечи системного программиста [2]. Причина возникновения противоречивости данных в чащ всего - это корректировка избыточных данных. К примеру, при изменении какой-либо записи может возникнуть ситуация, при которой отдельные экземпляры этой же записи, которые хранятся в разных местах, окажутся не скорректированными. Решение такой проблемы полностью ложится на программиста. Помимо этого, противоречивость может возникать и при редактировании не избыточных данных, что проявляется в случаях централизованного хранения данных. Так, к примеру, если один пользователь редактирует данные, а другой пользователь в текущий момент пытается обратиться к ним, может возникнуть противоречие. Причиной для этого выступает тот факт, что для обновления данных требуется какое-то время. Современные СУБД включают сложные механизмы блокировки обновляемых данных от доступа других пользователей к ним. Чаще всего это реализовано так, что выполняются последовательно параллельные запросы к одним и тем же данным. Помимо этого, некоторые СУБД обладают средствами, предотвращающими дублирование и возникновение противоречивости. Независимость данных говорит о том, что прикладные программы не должны зависеть от хранимых данных, т.е. от способа хранения данных в физической памяти. Это дает возможность вводить в БД новые таблицы и записи, менять структуру хранения данных, а также создавать новые приложения на БД. При этом важно, чтобы программы созданные ранее "чувствовали" эти изменения. Обычно СУБД выполняют это требование. Структура БД должна давать возможность включать новые данные и удалять устаревшие, а так же корректировать хранимые данные не разрушая логические связи, которые установлены в схеме БД. Для этого необходимо правильно разработать схему базы данных, а операции ведения не должны ее нарушать. Минимальная избыточность определяет условие того, что данные в рамках одной базы данных не должны дублироваться. Избыточность данных порождает несколько проблем: * увеличение расхода памяти и уменьшение времени отклика системы в ходе обработки больших объемов данных; * нарушение непротиворечивости данных. Требование секретности и безопасности говорит о необходимости реализации защиты хранящихся данных от несанкционированного доступа, непреднамеренного и преднамеренного разрушения данных, а также их хищения. Система защиты БД должна решать данные задачи: * идентификация пользователей. Доступ к БД должен быть разрешен только доверенным лицам. Простейший способ решения данной задачи – система паролей; * ограничение доступа к данным. Ограничение доступа говорит о наличии определенных прав доступа к данным, которые выделяются пользователям. Существуют права на чтение, на доступ, на редактирование. Всеми привилегиями обладает только администратор БД; * обеспечение секретности данных. Эта задача являет шифрование особо важных данных, утечка которых может повлечь серьезные проблемы. Средства безопасности и защиты данных содержатся в СУБД или разрабатываются системным программистом [17]. БД должна быть организована так, чтобы максимальная скорость обработки данных была обеспечена. Т.е. пользователь должен взаимодействовать с базой данных в режиме диалога. Помимо этого, должна сводиться к минимуму и стоимость обслуживания. Целый ряд факторов влияет на выполнение данных условий: * объем данных для хранения; * быстродействие применяемых технических средств; * способ организации данных внутри БД. Необходимо организовать структуру базы данных так, чтобы более часто используемые данные хранились на наиболее доступных участках внешней памяти. Представление данных в БД, способы взаимодействия пользователя с базой, соответствующая документация должны быть регламентированы определенными стандартами. Стандарты могут быть промышленными, международными, национальными, корпоративными и ведомственными. Соблюдение данных стандартов - обязательное условие для совместного использования данных и организации обмена данными между отдельными системами. К примеру, невозможно было бы организовать сеть Internet, без принятия некоторых стандартов. 2. Язык структурированных запросов SQL Язык SQL (StructuredQueryLanguage) - это структурированный язык запросов к реляционным БД. SQL является декларативным языком, в основе которого лежат операции реляционной алгебры. На сегодняшний день существует три стандарта SQL: * SQL-89 (SQL-1); * SQL-92 (SQL-2); * SQL-99/2003 (SQL-3) [7] Фундаментом реляционной модели данных является понятие отношения. Под отношением, как правило понимают подмножество декартова произведения доменов. Элементы отношения – кортежи, элементы кортежей – поля или атрибуты. Количество атрибутов определяет арность отношения, а количество кортежей – его мощность. Обращение к таблице происходит по имени. Помимо этого, каждый атрибут также имеет свое имя, свой тип данных, а даже определенный размер памяти, выделяемой для хранения этого атрибута. Список атрибутов отношения вместе с их размерами и типами принято называть схемой отношения. Отношения, построенные по одинаковым схемам, называют односхемными. Отношения, которые построены по разным схемам – разносхемные. Атрибуты могут характеризоваться конкретными ограничениями целостности – это определенные правила, которым должно удовлетворять значение атрибута. Отдельный вид атрибута (или группы атрибутов) – потенциальный ключ – это такие атрибуты, значения которых представляют собой уникальные в рамках отношения. Из определения видно, что данные атрибуты однозначно идентифицируют кортеж. Потенциальный ключ называется составным, если он состоит из нескольких атрибутов. Помимо этого, важно отметить, что может быть несколько ключей. Главным в таком случае выступает первичный ключ, значения которого обязательны для каждой строки. В таблице может быть только один первичный ключ. С помощью внешнего ключа реализуется связь между отношениями. Внешним ключом принято называть атрибут подчиненного отношения, который является копией первичного или другого уникального ключа родительского отношения. В стандартах языка SQL терминология немного иная: * отношение – таблица; * кортеж – строка; * атрибут – столбец [4]. Язык для работы с БД должен давать пользователю некоторые возможности: ? создание таблиц и БД с полным описанием структуры; ? выполнение основных операций манипулирования данными (добавление, редактирование, удаление); ? выполнение запросов, которые осуществляют преобразование данных БД в необходимую информацию [18]. Для выполнения таких требований SQL содержит три группы средств: ? DDL (Data Definition Language) – языкопределенияданных; ? DML (Data Manipulation Language) – языкманипулированияданными; ? DCL (DataControlLanguage) – язык управления данными [19]. 2.1. Создание таблиц Для создания новой таблицы язык DDL предоставляет команду CREATETABLE: CREATETABLE[имя] ([поле_1] [тип] [размер] [[NOT] NULL] [DEFAULT[выражение]] [ограничения_целостности], [поле_2] [тип] [размер] [[NOT] NULL] [DEFAULT[выражение]] [ограничения_целостности] …, [ограничения_целостности_таблицы]); Описание параметров команды приведено в таблице 1 [20]. Таблица 1 – Описание элементов команды CREATETABLE Элемент Описание [имя] Уникальный в рамках БД идентификатор таблицы [поле_1], [поле_2]… Уникальные в рамках таблицы идентификаторы столбцов [тип] Типданныхполя: * INT, SMALLINT, INTEGER – целочисленные значения; * NUMERIC[(длина [, точность])], NUMBER[(длина [, точность])], – числа с фиксированной запятой; * REAL, FLOAT – дробные числа; * VARCHAR(длина), CHAR(длина) – символьные строки переменнойи фиксированной длины; * DATETIME, DATE – дата/время; * TIME – время. [размер] Величина поля, измеряемая в символах (используется для символьных и числовых данных). [ограничения_ целостности] * PRIMARY KEY – первичныйключ; * UNIQUE – значение поля должно быть уникальным в пределах столбца; * CHECK[условие] – ограничение значения поля в зависимости от задаваемого логического условия; * REFERENCES[имя] [имя_поля] – внешний ключ. [ограничения_ целостности_ таблицы] * CHECK[условие] – ограничение значения полей в зависимости от задаваемого логического условия; * FOREIGNKEY [поля] REFERENCES[имя] [поля] – внешнийключ; * PRIMARYKEY[поля] – первичный ключ; * UNIQUE[поля]– значения полей должны быть уникальными в пределах столбца. В случае, когда размер поля не указывается, оно принимается равным по умолчанию (каждая СУБД определяет это значение по-своему). Точность числовых типов по умолчанию равна 0, символьных – 1, точность всегда необходимо указывать самостоятельно для символьных строк переменной длины. Помимо этого, стандарт SQL включает понятие неопределенного значения – NULL. Ограничением NOTNULL отмечаются поля, обязательные для заполнения. Это говорит о том, что при редактировании значения данного поля, или при добавлении новой записи, это поле не может равняться NULL. Еще один важный параметр - DEFAULT<выражение>, которое представляет собой значение, задающееся по умолчанию. Оно применяется в тех случаях, когда при добавлении данных в таблицу значение полей не указывается. Для ограничений целостности можно задавать имена вида: CONSTRAINT<имя><ограничение_целостности>. 2.2. Редактирование данных За редактирование данных отвечает DML. Сюда входят команды добавления, редактирования, а также удаления записей таблиц. При этом проверяются все установленные ограничения целостности. В случае нахождения ошибок команда не выполняется, и выдается сообщение об ошибке. Если команда выполнена успешно, выводится информация о количестве обработанных строк. 2.2.1. Добавление записи Для добавления новых записей в таблицы используется команда INSERT: INSERTINTO[имя] [([поле_1],[поле_2]…)] VALUES([значение_1],[значение_2]…) | [запрос]; В виде запроса работает команда SELECT (см. ниже), результаты выполнения которой будут добавлены в указанную таблицу. VALUES содержит выражения, определяющие значения атрибутов новой записи таблицы. Выражение в таком случае может содержать константы, вызовы функций, конкатенацию строк, а также арифметические операции. Необходимо помнить, что тип выражения должен соответствовать типу поля. Даты и строки помещаются в одинарные кавычки. В том случае, когда при добавлении записи значение одного или нескольких полей неизвестно, допустимо не устанавливать это значение, пропустить его, или указать его значение равным NULL. В данном случае значение будет присвоено по умолчанию. 2.2.2. Обновление данных Для редактирования (обновления) данных в таблице используется командаUPDATE: UPDATE[имя] SET {[поле] = [выражение]} [WHERE[условие]]; В результате выполнения данной команды в таблице [имя] обновляются значения полей, указанных в списке SET, для тех строк, которые выбираются из таблицы по задаваемому условию. В том случае, если условие отсутствует, команда применится ко всей таблице. 2.2.3. Удаление записей Для удаления одной или нескольких записей из таблицы используется командаDELETE: DELETE FROM [имя] [WHERE [условие]]; В результате выполнения данной команды из указанной таблицы будут удалены записи, которые удовлетворяют условие отбора. Если условие не задано, все записи таблицы будут удалены. 2.3. Выборка данных Для реализации выборки определенного набора данных из таблицы используется командаSELECT: SELECT (секция). Необходимо подчеркнуть, что в результате выполнения этой команды, данные, находящиеся в таблице, не изменяются. Набор данных, являющийся результатом данной команды,предлагается в виде временной таблицы. Синтаксис командыSELECT: SELECT [ALL | DISTINCT] {* | [список_выбора]} FROM {[имя] | [алиас]},… [WHERE[условие_выбора]] [GROUPBY {[поле_1] | [выражение]},…] [HAVING[условие]] [ORDERBY {[поле] | [целое] [ASC | DEC]},…] [UNION [ALL] SELECT …]; Параметры команды SELECT приведены в таблице 2. Таблица 2 – Элементы команды SELECT Элемент Описание [список_выбора] Перечень элементов, разделенных запятыми: [выражение] [AS] [алиас] В состав выражения могут входить вызовы функций,имена полей, константы и знаки операций. Алиас в этом случае выступает идентификаторомрезультирующего столбца. [имя] Уникальный идентификатор временной таблицы, которая будет использоваться для представления результата команды. [алиас] Синоним имени временной таблицы, который определяетсяисключительно в пределах запроса. [условие] Логическое условие, которое принимает значение «истина» или «ложь» для каждой записи таблицы. [поле] Идентификатор столбца таблицы. [целое] Целая величина, определяющая порядковый номер элемента в списке выбора. Список выбора характеризует схему результата запроса. Он может модифицироваться ключевыми словами: * DISTINCT – предикат, который отвечает за удаление одинаковых строк в результирующей таблице; * ALL – предикат, который отвечает за вывод абсолютно всех строк. Нет необходимости явно указывать это значение, т.к. оно установлено по умолчанию. Порядок выполнения команды SELECTтакой: * выбор из указанной во фразе FROM таблицы записей, удовлетворяющих условию отбора отдельных записей (WHERE); * группировка полученных записей (GROUP BY) – при этом все записи с одинаковым значением указанного поля объединяются в одну группу. В результате в итоговой таблице каждой такой группе будет соответствовать одна запись; * выбор групп, удовлетворяющих условию отбора (HAVING); * сортировка записей в определенном порядке (ORDER BY) – ASC – по возрастанию, DESC – по убыванию; * извлечение из записей полей, которые заданы в списке выбора, и формирование результирующей таблицы. В случае, когда во фразе FROM указаны две и более таблицы, эта последовательность действий будет выполняться для декартова произведения указанных таблиц [11]. 3. Оптимизация SQL-запросов Можно выделить два вида оптимизация SQL-запросов: * синтаксическая оптимизация; * семантическая оптимизация. За осуществление синтаксической оптимизации отвечает особый компонент, который встроен в СУБД – это оптимизатор запросов. Его основная задача – преобразовать запрос в некоторое особое внутреннее представление, удобное для машинной обработки. Вторая его задача представляет собой нахождение оптимального плана выполнения полученного представления. Оптимальность характеризуется минимальными затратами производительности. По факту такое преобразование не зависит от конкретной БД. Происходит некое изменение внутреннего представления БД. Она содержит особую семантическую информацию, определяющую целостность БД, а не только множество взаимосвязанных таблиц. Под семантической оптимизацией принято понимать проверку корректности и преобразования синтаксического дерева запроса в форму, которая пригодна для дальнейших оптимизационных шагов. 3.1. Синтаксическая оптимизация Синтаксическая оптимизация включает выполнение ряда этапов. Начальный этап состоит в реализации проверок на предмет корректности входного запроса. Если обнаруживается ошибка, прекращается процесс синтаксической оптимизации и СУБД уведомляет пользователя об ошибке. Если же запрос сформирован правильно, осуществляется переход к следующему этапу. На втором этапе запрос преобразуется в каноническую форму, которая пригодна для восприятия СУБД. Каноническая форма требует меньших затрат на выполнение входного запроса, однако предоставляемый результат при этом полностью эквивалентен исходному запросу. Основная задачатакого преобразования - это приведение запроса в форму, которая понятна СУБД. Один из этапов построения канонической формы - это логическое преобразование предикатов исходного запроса (условий выборки записей). Сначала преобразованиям подвергаются простые предикаты, связанные операторами сравнения. Другим преобразованием является обработка вложенных подзапросов. Вложенным подзапросом принято называть особый инструмент для создания временной таблицы, с которой взаимодействует внешний оператор. 3.2. Семантическая оптимизация Семантическая оптимизация запросов СУБД является процессом валидации и преобразования синтаксического дерева запроса в особую форму, которая является пригодной для дальнейших оптимизационных шагов. Первый этап включает приведение запросов к каноническому виду. В таком контексте это говорит о том, что эти запросы должны содержать минимальное число операторов SELECT. По возможности результатэтого этапа должен представлять собой запрос с единственным оператором SELECT. Такие преобразования дают возможность сгенерировать максимально эффективный план выполнения сложных запросов на дальнейших этапах оптимизации. Второй этап включает две фазы: * первая фаза - преобразование дерева логических операций в конъюнктивную нормальную форму; * вторая фаза - упрощение полученной логической функции. Рассмотрим подробнее первый этап. Раскрытие представлений используется для того, чтобы итоговый запрос включал ссылки только на материализованные отношения (таблицы) и было возможно использовать конвейерную обработку данных (см. таблицу 3). Таблица 3 – Раскрытие представлений Исходный запрос Результат (T where clause1) where clause2 T where (clause1 and clause2) В этом примере рассмотрено условие поиска величины Т сначала по условию 1, затем по условию 2. В следствие оптимизации этот запрос преобразуется в поиск величины Т по комплексу условий 1 и 2. Следующий шагпредставляет собой преобразование подзапросов в соединения. Данный этап необходим для применения конвейерной обработки данных, а также минимизации объема результатов подзапросов, аккумулируемых во временной дисковой или в оперативной памяти (см. таблицу 4). Таблица 4 – Преобразование подзапросов Исходный запрос Результат select distinct T.a from T where T.b in (select T1.b from T1 where T1.c < T.c) select distinct T.a from T,T1 where T.b = T1.b and T1.c < T.c В этом примере выполняется запрос выборки из таблицы Т различных величин Т.а, таких, у которых Т.b соответствует результату выборки из таблицы Т1 величин, которые удовлетворяют условию Т1.с < Т.с. После оптимизации этот запрос становится гораздо понятнее и может быть прочитан как: выбрать различные Т.а, используя таблицы Т и Т1, таким образом, чтобы два условиявыполнялисьодновременно: T.b=T1.b, T1.c |
Для получения полной версии работы нажмите на кнопку "Узнать цену"
Узнать цену | Каталог работ |
Похожие работы:
- Оптимизация запросов в sql.
- Документирование деятельности по исполнению социально-правовых запросов граждан на примере архивного отдела администрации МОГО Ухта
- Правовое регламентирование и характеристика деятельности архивного отдела администрации города сургута по исполнению социально – правовых запросов граждан