Как Вы интерпретируете запрос, объясняет план?

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

88
задан lbalazscs 20 September 2012 в 15:58
поделиться

11 ответов

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

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

Так, для механизма того, как прочитать объяснить план, документация Oracle является хорошим руководством: http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/ex_plan.htm#PFGRF009

Имеет хорошее чтение через Руководство по Настройке Производительности также.

Также имеют Google для "обратной связи кардинальности", техники, которую объяснить план может использоваться для сравнения оценок кардинальности на различных этапах в запросе с фактической кардинальностью, испытанной во время выполнения. Wolfgang Breitling является автором метода, я верю.

Так, нижняя строка: поймите механизмы доступа. Поймите базу данных. Поймите намерение запроса. Избегайте эмпирических правил.

78
ответ дан Thiago Arrais 24 November 2019 в 07:36
поделиться

Этот предмет является слишком большим для ответа в вопросе как это. Необходимо не торопиться для чтения Руководство по Настройке Производительности Oracle

13
ответ дан Tony Andrews 24 November 2019 в 07:36
поделиться

Эти два примера ниже показывают Полное сканирование и сканирование FAST с помощью ИНДЕКСА.

Лучше концентрироваться на Вашей Стоимости и Кардинальности. При рассмотрении примеров использование индекса уменьшает Стоимость выполнения запроса.

Это имеет немного более сложный (и у меня нет 100%-го дескриптора на нем), но в основном Стоимость является функцией ЦП и стоимости IO, и Кардинальность является количеством строк, которые Oracle ожидает анализировать. Сокращение обоих из них является хорошей вещью.

не забывают, что Стоимость запроса может быть под влиянием Вашего запроса и модели оптимизатора Oracle (например: СТОИМОСТЬ, ВЫБЕРИТЕ и т.д.), и как часто Вы выполняете свою статистику.

Пример 1:

СКАНИРОВАНИЕ http://docs.google.com/a/shanghainetwork.org/File?id=dd8xj6nh_7fj3cr8dx_b

Пример 2 Индекса использования:

ИНДЕКС http://docs.google.com/a/fukuoka-now.com/File?id=dd8xj6nh_9fhsqvxcp_b

И, как уже предложено, не упустите СКАНИРОВАНИЕ ТАБЛИЦЫ. Можно обычно избегать их.

5
ответ дан Mark Nold 24 November 2019 в 07:36
поделиться

Поиск вещей как последовательные сканирования может быть несколько полезным, но действительность находится в числах... кроме тех случаев, когда числа являются просто оценками! Что обычно является далеко более полезный, чем рассмотрение запроса , план смотрит на фактическое выполнение . В Пост-ГРЭС вот в чем разница между, ОБЪЯСНЯЮТ и ОБЪЯСНЯЮТ, АНАЛИЗИРУЮТ. ОБЪЯСНИТЕ АНАЛИЗИРУЮТ, На самом деле выполняет запрос и получает реальную информацию синхронизации для каждого узла. Это позволяет Вам видеть то, что на самом деле случай, вместо того, что планировщик думает , произойдет. Много раз Вы будете находить, что последовательное сканирование не является проблемой вообще, вместо этого это - что-то еще в запросе.

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

4
ответ дан decibel 24 November 2019 в 07:36
поделиться

Действительно для проблем как они, лучшая вещь сделать ASKTOM. В особенности его ответ на тот вопрос содержит ссылки на документ Oracle онлайн, где много тех видов правил объяснено.

Одна вещь иметь в виду, это объясняет, что планы являются действительно лучшими предположениями.

Это была бы хорошая идея учиться использовать sqlplus и эксперимент с командой AUTOTRACE. С некоторыми твердыми числами можно обычно принимать лучшие решения.

, Но Вы должны ASKTOM. Он знает все об этом:)

3
ответ дан EvilTeach 24 November 2019 в 07:36
поделиться

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

2
ответ дан Tom Leys 24 November 2019 в 07:36
поделиться

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

Seq Scan on my_table  (cost=0.00..15558.92 rows=620092 width=78)

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

2
ответ дан convex hull 24 November 2019 в 07:36
поделиться

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

, Например, при присоединении к двум таблицам, A и B на их соответствующих столбцах C и D (C=B.D), и план показывает сканирование кластерного индекса (термин SQL Server - не уверенный в термине оракула) на таблице A, тогда вложенный цикл соединяет с серией кластерного индекса, ищет на таблице B, Вы могли бы думать, что была проблема. В том сценарии Вы могли бы ожидать, что механизм сделает пару индексных сканирований (по индексам на столбцах, к которым присоединяются) сопровождаемый слиянием. Дальнейшее расследование могло бы показать плохую статистику, заставляющую оптимизатор выбирать тот шаблон соединения или индекс, который на самом деле не существует.

2
ответ дан Jonathan Rupp 24 November 2019 в 07:36
поделиться

посмотрите на процент времени, проведенного в каждом подразделе плана, и рассмотрите то, что делает механизм. например, если это сканирует таблицу, рассмотрите помещение индекса на поле (полях), которое является, сканирует для

1
ответ дан Steven A. Lowe 24 November 2019 в 07:36
поделиться

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

От http://www.sql-server-performance.com/tips/query_execution_plan_analysis_p1.aspx :

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

* Index or table scans: May indicate a need for better or  additional indexes.
* Bookmark Lookups: Consider changing the current clustered index,
  consider using a covering index, limit
  the number of columns in the SELECT
  statement.
* Filter: Remove any functions in the WHERE clause, don't include wiews
  in your Transact-SQL code, may need
  additional indexes.
* Sort: Does the data really need to be sorted? Can an index be used to
  avoid sorting? Can sorting be done at
  the client more efficiently? 

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

1
ответ дан dpollock 24 November 2019 в 07:36
поделиться

Эмпирические правила

(Вы, вероятно, хотите читать на деталях также:

Плохой

Сканирования таблицы Нескольких Больших Таблиц

Хороший

Используя Индекс уникального индекса
включают все обязательные поля

Наиболее распространенная Победа

приблизительно в 90% проблем производительности, которые я видел, самая легкая победа должна разбить запрос с партиями (4 или больше) из таблиц в 2 меньших запроса и временную таблицу.

-7
ответ дан AJ. 24 November 2019 в 07:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: