Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Тоу Д. -> "Настройка SQL. Для профессионалов" -> 156

Настройка SQL. Для профессионалов - Тоу Д.

Тоу Д. Настройка SQL. Для профессионалов — СПб.: Питер, 2004. — 333 c.
ISBN 5-94723-959-0
Скачать (прямая ссылка): nastroykasqldlyaprof2004.djvu
Предыдущая << 1 .. 150 151 152 153 154 155 < 156 > 157 158 159 160 .. 161 >> Следующая


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

Теперь оба оптимизатора Oracle возвращают оптимальный план — значит, работа закончена! Чтобы убедиться в этом, можно выполнить SQL-запрос со значением параметра sql plus равным timing on. Оказывается, Oracle возвращает результат всего за 40 миллисекунд, по сравнению с предыдущим показателем производительности 2,4 секунды для исходного синтаксического плана выполнения и 8,7 секунды для исходного стоимостного плана выполнения.

Изменение приложения

Как это чаще всего бывает, единственное необходимое изменение приложения в этом примере — это небольшая модификация самого SQL-кода. Это всегда самый хороший результат, так как это наименее рискованное изменение, которое проще всего производить. Запрос вернет всего несколько строк, так как лучший фильтр сам по себе очень селективный. Если бы запрос возвращал слишком много строк или если бы он выполнялся чрезвычайно часто, просто чтобы выполнить одну задачу приложения, то вы бы исследовали изменения, которые необходимо внести в приложение, чтобы сузить запрос или выполнять его реже.

Взгляд в будущее

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

ПРИМЕЧАНИЕ---------------------------------------------------------------

Однако когда вам нужны методы для особых случаев, это значит, что они вам действительно нужны!

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

321

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

Агрегация

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

Антисоединение

Корреляционное соединение, примененное к подзапросу типа NOT EXISTS.

Блок

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

Буфер блоков кэша Кэш, который хранит недавно использованные блоки таблицы и индекса в совместно используемой памяти для упрощения логического ввода-вывода, устраняя необходимость физического ввода-вывода кэшированных блоков. SQL-код любого пользователя может считывать блоки в буфер блоков кэша и SQL любого пользователя автоматически пользуется преимуществами этих кэшированных блоков. Cm. кэширование LRU.

Ввод-вывод

Ввод-вывод. Обычно обозначает физический ввод-вывод, но также может относиться к логическому вводу-выводу.

Ведущая таблица

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

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

323

Внешний ключ

Значение кортежа хранящихся в таблице строк, которое соответствует уникальному ключу в строке какой-то другой таблицы, что определяется соответствием первичному ключу.
Предыдущая << 1 .. 150 151 152 153 154 155 < 156 > 157 158 159 160 .. 161 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100