В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Я дрожу каждый раз, когда я вижу комментарии, что полные сканирования таблицы плохи и индексируют доступ, хорошо. Полные сканирования таблицы, индексные сканирования диапазона, быстро полные индексные сканирования, вложенные циклы, слияние, хэширования и т.д. являются просто механизмами доступа, которые должны быть поняты под аналитиком и объединены со знанием структуры базы данных и целью запроса, чтобы сделать любой значимый вывод.
полное сканирование А является просто самым эффективным способом считать значительную долю блоков сегмента данных (таблица или таблица (sub) раздел), и, в то время как это часто может указывать на проблему производительности, которая находится только в контексте того, является ли это эффективным механизмом для достижения целей запроса. Говоря как хранилище данных и парень BI, мой флаг предупреждения номер один для производительности является основанным на индексе методом доступа и вложенным циклом.
Так, для механизма того, как прочитать объяснить план, документация Oracle является хорошим руководством: http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/ex_plan.htm#PFGRF009
Имеет хорошее чтение через Руководство по Настройке Производительности также.
Также имеют Google для "обратной связи кардинальности", техники, которую объяснить план может использоваться для сравнения оценок кардинальности на различных этапах в запросе с фактической кардинальностью, испытанной во время выполнения. Wolfgang Breitling является автором метода, я верю.
Так, нижняя строка: поймите механизмы доступа. Поймите базу данных. Поймите намерение запроса. Избегайте эмпирических правил.
Этот предмет является слишком большим для ответа в вопросе как это. Необходимо не торопиться для чтения Руководство по Настройке Производительности Oracle
Эти два примера ниже показывают Полное сканирование и сканирование 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
И, как уже предложено, не упустите СКАНИРОВАНИЕ ТАБЛИЦЫ. Можно обычно избегать их.
Поиск вещей как последовательные сканирования может быть несколько полезным, но действительность находится в числах... кроме тех случаев, когда числа являются просто оценками! Что обычно является далеко более полезный, чем рассмотрение запроса , план смотрит на фактическое выполнение . В Пост-ГРЭС вот в чем разница между, ОБЪЯСНЯЮТ и ОБЪЯСНЯЮТ, АНАЛИЗИРУЮТ. ОБЪЯСНИТЕ АНАЛИЗИРУЮТ, На самом деле выполняет запрос и получает реальную информацию синхронизации для каждого узла. Это позволяет Вам видеть то, что на самом деле случай, вместо того, что планировщик думает , произойдет. Много раз Вы будете находить, что последовательное сканирование не является проблемой вообще, вместо этого это - что-то еще в запросе.
другой ключ определяет, каков фактический дорогой шаг. Много графических инструментов будут использовать разного размера стрелки для указания, какого количества стоят различные части плана. В этом случае просто ищите шаги, которые имеют тонкие входящие стрелки и толстый отъезд стрелки. Если Вы не будете использовать GUI, то Вы будете нуждаться к глазному яблоку в числах и искать, где они внезапно становятся намного более крупными. С небольшой практикой становится довольно легко выбрать проблемные области.
Действительно для проблем как они, лучшая вещь сделать ASKTOM. В особенности его ответ на тот вопрос содержит ссылки на документ Oracle онлайн, где много тех видов правил объяснено.
Одна вещь иметь в виду, это объясняет, что планы являются действительно лучшими предположениями.
Это была бы хорошая идея учиться использовать sqlplus и эксперимент с командой AUTOTRACE. С некоторыми твердыми числами можно обычно принимать лучшие решения.
, Но Вы должны ASKTOM. Он знает все об этом:)
Вывод объяснения говорит Вам, сколько времени каждый шаг взял. Первая вещь состоит в том, чтобы найти шаги, которые заняли много времени и понимают то, что они имеют в виду. Вещи как последовательное сканирование говорят Вам о необходимости в лучших индексах - это - главным образом вопрос исследования конкретной базы данных и опыта.
Один "О нет, это не правильно", часто в форме сканирование таблицы . Сканирования таблицы не используют специальных индексов и могут способствовать чистке каждого полезного в кэшах памяти. В postgreSQL, например, Вы найдете, что он похож на это.
Seq Scan on my_table (cost=0.00..15558.92 rows=620092 width=78)
Иногда сканирования таблицы идеальны законченный, скажем, использование индекса для запросов строк. Однако это - один из тех шаблонов красного флага, которые Вы, кажется, ищете.
В основном Вы смотрите на каждую операцию и видите, имеют ли операции "смысл", учитывая Ваше знание того, как это должно быть в состоянии работать.
, Например, при присоединении к двум таблицам, A и B на их соответствующих столбцах C и D (C=B.D), и план показывает сканирование кластерного индекса (термин SQL Server - не уверенный в термине оракула) на таблице A, тогда вложенный цикл соединяет с серией кластерного индекса, ищет на таблице B, Вы могли бы думать, что была проблема. В том сценарии Вы могли бы ожидать, что механизм сделает пару индексных сканирований (по индексам на столбцах, к которым присоединяются) сопровождаемый слиянием. Дальнейшее расследование могло бы показать плохую статистику, заставляющую оптимизатор выбирать тот шаблон соединения или индекс, который на самом деле не существует.
посмотрите на процент времени, проведенного в каждом подразделе плана, и рассмотрите то, что делает механизм. например, если это сканирует таблицу, рассмотрите помещение индекса на поле (полях), которое является, сканирует для
Я главным образом ищу индекс или сканирования таблицы. Это обычно говорит мне, что я пропускаю индекс на важном столбце, это находится в где оператор соединения или оператор.
От 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?
не всегда возможно избежать их, но чем больше можно избежать их, тем более быстрая производительность запросов будет.
(Вы, вероятно, хотите читать на деталях также:
Сканирования таблицы Нескольких Больших Таблиц
Используя Индекс уникального индекса
включают все обязательные поля
приблизительно в 90% проблем производительности, которые я видел, самая легкая победа должна разбить запрос с партиями (4 или больше) из таблиц в 2 меньших запроса и временную таблицу.