План выполнения SQL запроса Oracle. План запроса оптимизация oracle
Понимание результатов Execute Explain Plan в Oracle SQL Developer
Результат EXPLAIN PLAN - это отладочный вывод оптимизатора запросов Oracle. COST - это конечный результат оптимизатора затрат (CBO), целью которого является выбор того, какой из множества возможных планов должен использоваться для запуска запроса. CBO рассчитывает относительную стоимость для каждого плана, затем выбирает план с самой низкой стоимостью.
(Примечание: в некоторых случаях СВО не имеет достаточно времени, чтобы оценить каждый возможный план, в таких случаях он просто выбирает план с наименьшей стоимостью найденную до сих пор)
В общем, один из самых больших вкладчиками медленного запроса является количество строк, считанных для обслуживания запроса (точнее, блоков), поэтому стоимость будет основана на в части на количестве строк, которые должны быть прочитаны оценками оптимизатора.
Например, предположим, что у вас есть следующий запрос: (. Колонку months_of_service имеет NOT NULL ограничение на него и обычный индекс на нем)
Есть два основных планов оптимизатору может выбрать здесь:
- План 1: Прочитайте все строки из таблицы «сотрудники», для каждого, проверить, если предикат истинен (months_of_service=6).
- План 2: прочитать индекс, где months_of_service=6 (это приводит к набору ROWID), затем получить доступ к таблице на основе возвращенных ROWID.
Представим себе, что таблица «сотрудники» имеет 1 000 000 (1 миллион) строк. Предположим далее, что значения для months_of_service варьируются от 1 до 12 и по какой-то причине довольно равномерно распределены.
Стоимость План 1, в котором используется ПОЛНЫЙ СКАНИРОВАНИЕ, будет стоить чтение всех строк в таблице сотрудников, что примерно равно 1 000 000; но поскольку Oracle часто может считывать блоки с использованием многоблочных чтений, фактическая стоимость будет ниже (в зависимости от того, как настроена ваша база данных) - например, давайте представим, что количество отсчетов с несколькими блоками равно 10 - расчетная стоимость полного сканирования составит 1,000,000/10; Общая стоимость = 100 000.
Стоимость плана 2, который включает в себя УКАЗАТЕЛЬ диапазон сканирования и просмотра таблицы по ROWID, будет стоимость сканирования индекса, плюс стоимость доступа к таблице с помощью ROWID. Я не буду вдаваться в то, как сканирование индексов диапазона стоит, но давайте представим, что стоимость сканирования диапазона индексов - 1 на строку; мы ожидаем найти совпадение в 1 из 12 случаев, поэтому стоимость сканирования индекса составляет 1,000,000/12 = 83,333; плюс стоимость доступа к таблице (предположим, что 1 блок считывается за доступ, мы не можем использовать многоблочные чтения здесь) = 83,333; Общая стоимость = 166 666.
Как вы можете видеть, стоимость плана 1 (полное сканирование) меньше, чем стоимость плана 2 (индексное сканирование + доступ по rowid) - это означает, что CBO будет выбирать ПОЛНОЕ сканирование.
Если предположения, сделанные здесь оптимизатором, верны, то на самом деле план 1 будет предпочтительным и намного более эффективным, чем План 2, - который опровергает миф о том, что ПОЛНЫЕ сканирования «всегда плохие».
Результаты будут совсем другими, если целью оптимизатора было FIRST_ROWS (n) вместо ALL_ROWS - в этом случае оптимизатор будет поддерживать план 2, потому что он будет часто возвращать первые несколько строк быстрее, ценой менее эффективной для всего запроса.
stackoverrun.com
oracle - План выполнения запросов Oracle
Я немного запутался в плане выполнения запроса Oracle. Это в Oracle Enterprise Edition 11.2.0.1.0 на платформе IBM AIX 6.1. У меня есть таблица TEST1 (1 миллион строк) и другая таблица TEST2 (50 000 строк). Обе таблицы имеют одинаковые столбцы. Существует представление, созданное как объединение этих двух таблиц. Я запускаю запрос в этом представлении с индексированным столбцом в предложении WHERE. Я могу найти, что индекс не используется и отображается полное сканирование таблицы. С небольшим изменением запроса он начал использовать индекс. Мне интересно, как это изменение может привести к изменению плана.
Ниже вы найдете полный DDL + DML. Я привел упрощенный пример. Фактическая схема и требования немного сложнее. Фактически рассматриваемый запрос динамически строится и выполняется генератором кода OCI. Мое намерение здесь заключается не в том, чтобы получить альтернативы, а в том, чтобы понять, что может быть логическим аргументом в изменении плана (между, я программист приложений, а не администратор базы данных). Ваша помощь очень ценится.
qaru.site
План выполнения SQL запроса Oracle
Oracle 12c: введение в SQL 1:
Введение в базу данных Oracle 12c Oracle 12c: введение в SQL 1: Обзор основных возможностей БД Oracle 12c Обсуждение основных концепций, а также теоретических и физических аспектов реляционной базы данных
ПодробнееИспользование памяти
Использование памяти Темы Использование оперативной памяти разными операциями Ограничение размера выделяемой памяти Временные файлы 2 Для чего нужна память? Сортировка ORDER BY, подготовка к соединению
Oracle Database 11g: Введение в SQL.
Продолжительность обучения 40 часов. Oracle Database 11g: Введение в SQL. Для успешного усвоения материала курса, слушатель должен обладать следующими знаниями и умениями: Общее представление о реляционной
Подробнее3.1. Структура запросов
Лекция 3. Язык SQL. Средства манипулирования данными 3.1. Структура запросов Для того, чтобы можно было более или менее точно рассказать про структуру запросов в стандарте SQL/89, необходимо начать со
ПодробнееЗапускаем параллельный SQL
Запускаем параллельный SQL Владимир Прушковский CacheConf Введение в SQL Введение в SQL Основные компоненты The Unified Data Dictionary Репозиторий мета-данных (Class Definition) Все хранимые классы автоматически
ПодробнееFirebird 3.0: первое знакомство
Firebird 3.0: первое знакомство Дмитрий Еманов [email protected] Firebird Project http://www.firebirdsql.org/ Приоритеты разработки Первичные цели Поддержка современного «железа» в многопоточном ядре
Подзапросы и предикаты
Подзапросы и предикаты 1 Проблема Требование реляционной модели суперпозиция реляционных операций SELECT обеспечивает ее лиши частично 2 Решение Раннее решение использовать представления CREATE [OR ALTER]
ПодробнееНовые возможности Btree
Новые возможности Btree Лубенникова А.В. Фролков И.А. www.postgrespro.ru Общий принцип Чем меньше данных тем лучше Вырожденный случай одна строка в одной таблице с одной колонкой Так не бывает :-) Почему?
ПодробнееMS Создание запросов в Microsoft SQL Server 2012
MS-10774 Создание запросов в Microsoft SQL Server 2012 Прод олжит ельн о сть ку рса: 40 академических часов Аттестация: удостоверение о повышении квалификации установленного образца (или сертификат ТПУ)
ПодробнееПРИМЕНЕНИЕ ЯЗЫКА SQL В MS ACCESS
Московский государственный технический университет имени Н. Э. Баумана Калужский филиал Ю. Е. Гагарин, С. В. Пономарев ПРИМЕНЕНИЕ ЯЗЫКА SQL В MS ACCESS Учебно-методическое пособие УДК 681.3.06 ББК 32.973
ПодробнееProcedural Structured Query Language
Procedural Structured Query Language Курс «Базы данных» Вадим Цесько Санкт-Петербургский государственный политехнический университет 29 марта 2012 г. Вадим Цесько (СПбГПУ) Procedural Structured Query Language
ПодробнееМЕТОДЫ ПРОГРАММИРОВАНИЯ. SQL
МЕТОДЫ ПРОГРАММИРОВАНИЯ. SQL Практикум для студентов механико-математмческого факультета специальности 1-31 03 01 «Математика» (по направлениям) МИНСК БГУ 2007 УДК 004.6(075.8) ББК 32.973.26-018.2я73 М54
ПодробнееВведение. Что потребуется для выполнения
Введение Допустим вам нужно что-нибудь найти в таблице. Без использования индексов это происходило бы линейно, т.е. перебором всей значений начиная с первой записи. Этот способ очень трудоемкий и затрачивает
Подробнее1С-Битрикс: Управление сайтом 7.x
1С-Битрикс: Управление сайтом 7.x Руководство по управлению каталогом товаров (без использования модуля Торговый каталог) Содержание Введение...3 Глава 1. Создание торгового каталога «Книги»...4 СОЗДАНИЕ
ПодробнееОглавление. Предисловие...3
Оглавление Предисловие...3 Ч а с т ь I. Базы данных, СУБД и модели данных Глава 1. Назначение технологии баз данных. Функции и основные компоненты систем управления базами данных..........................................
ПодробнееПростейшие конструкции языка SQL
Простейшие конструкции языка SQL Дмитрий Барашев 13 сентября 2016 г. Computer Science Center Этот материал распространяется под лицензией Creative Commons Attribution - Share Alike 3.0 http://creativecommons.org/licenses/by-sa/3.0/us/deed.ru
ПодробнееЯ.Е. ПРОКУШЕВ БАЗЫ ДАННЫХ
1 Я.Е. ПРОКУШЕВ БАЗЫ ДАННЫХ практикум для студентов, обучающихся по специальностям и направлениям подготовки 09.00.00 «Информатика и вычислительная техника», 10.00.00 «Информационная безопасность», а также
Подробнееdocplayer.ru