double arrow

Создание и использование представлений и синонимов

Резюме

Средства для анализа производительности

Многие базы данных предлагают специальные средства, позволяющие ускорить оптимизацию операторов SQL, а также работу базы данных в целом. Например, в Oracle имеется средство EXPLAIN PLAN, с помощью которого пользователь может ознакомиться с планом, по которому сервер базы данных собирается осуществить выполнение конкретного оператора SQL. С помощью другого средства Oracle – TKPROF – можно оценить ожидаемое время выполнения оператора. SQL Server предлагает целый ряд команд SET, с помощью которых можно оценить как скорость работы отдельных операторов SQL, так и скорость работы базы данных в целом. По поводу средств, доступных в вашем конкретном случае, обратитесь к соответствующей документации и проконсультируйтесь у своего администратора базы данных.

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

Вы ознакомились также с методами оптимизации операторов SQL, первый из которых заключается в улучшении внешнего вида оператора, что в общем-то не влияет на скорость выполнения оператора, но помогает при анализе и отладке операторов. Одним из основных моментов в деле оптимизации операторов SQL является умелое использование индексов. Есть случаи, когда индексы использовать необходимо, а есть случаи, когда индексы использовать нежелательно. При отсутствии индекса выполняется полное сканирование таблицы. При полном сканировании таблицы каждая из строк данных прочитывается полностью. Обсуждались также другие аспекты оптимизации, в частности, порядок размещения элементов, из которых составлен запрос. Самым важным моментом здесь оказывается правильное размещение в запросе наиболее ограничительного условия в выражении ключевого слова WHERE. В принципе, для правильного выбора оптимальной формы оператора SQL важно понимать не только язык SQL, но и структуру данных, базы данных в целом и ее внутренние связи, а также потребности обращающегося к данным пользователя.

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

Вопросы и ответы

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

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

Какие существуют способы проверки операторов SQL на оптимальность?

Каждая реализация языка предлагает свои средства проверки оптимальности операторов SQL. Для проверки на оптимальность операторов этой книги использовались средства Oracle?. В Oracle для этого предусмотрен ряд возможностей. Среди них средства EXPLAIN PLAN, TKPROF и команды SET. Поищите информацию о подобных средствах в документации по той реализации языка, которую вы используете.

Практикум

Тесты

1. Нужно ли использовать уникальный индекс в случае маленькой таблицы?

2. Что происходит, когда оптимизатор принимает решение не использовать индекс таблицы при выполнении запроса?

3. Где в выражении ключевого слова WHERE следует разместить наиболее ограничительные условия — до или после условий связывания таблиц?

Упражнения

Перепишите приведенные ниже операторы SQL в виде, который позволит увеличить скорость их выполнения по сравнению с исходным видом. Используйте таблицы EMPLOYEE_TBL И EMPLOYEE_PAY_TBL.

  1. SELECT LAST_NAME, FIRST_NAME

FROM EMPLOYEE_TBL

WHERE LAST_NAME LIKE '%ALL%';

  1. SELECT E.EMP_ID, E.LAST_NAME, E.FIRST_NAME, EP.SALARY

FROM EMPLOYEE_TBL E,

EMPLOYEE_PAY_TBL EP

WHERE LAST_NAME LIKE 'S%'

AND E.EMP_ID=EP.EMP_ID;

В ходе этого урока мы с вами поговорим о производительности, о создании и удалении представлений, о роли представлений в обеспечении защиты данных и о том, как обеспечить конечному производителю простоту доступа к данным и составления отчетов. Кроме того, мы поговорим о синонимах.

Основными на этом уроке будут следующие темы.

• Что такое представление?
• Использование представлений
• Представления и безопасность
• Хранение представлений
• Создание представлений
• Связанные представления
• Манипуляция данными в представлениях
• Что такое синоним?
• Управление синонимами
• Создание синонимов
• Удаление синонимов

Что такое представление?

Представление — это виртуальная таблица, т. е. представление выглядит как таблица и ведет себя при обращении с ним пользователя подобно таблице. Представление на самом деле является комбинацией таблиц в форме заранее определенного запроса. Например, на основе таблицы EMPLOYEE_TBL можно создать представление, содержащее только имена и адреса сотрудников, а не все столбцы таблицы. Представление может содержать также не все, а только некоторые столбцы таблицы. Представление может основываться на данных как одной, так и нескольких таблиц.

Представление — это заранее определенный запрос, сохраненный в базе данных, имеющий вид обычной таблицы и проявляющий себя подобно таблице, но не требующий дополнительного места для хранения.

Созданное представление фактически означает выполнение в отношении базы данных того оператора SELECT, который составляет суть представления. Такой оператор SELECT может либо просто содержать список столбцов таблицы, из которой извлекаются данные, либо может быть более сложным и включать обработку извлекаемых данных с помощью различных функций для представления этих данных в том виде, в котором их удобно видеть пользователю. Взгляните на рис. 20.1.

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

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

Рис. 20.1, Представление

Если используемая в представлении таблица удаляется, представление становится недоступным, и тогда при попытке выполнения запроса в отношении данного представления будет получено сообщение об ошибке


Сейчас читают про: