Как использовать, Объясняет План оптимизировать запросы?

(1/3) означает целочисленное деление, поэтому вы не можете получить десятичное значение из этого деления. Для решения этой проблемы используйте:

public static void main(String[] args) {
        double g = 1.0 / 3;
        System.out.printf("%.2f", g);
    }
20
задан Mitch Wheat 25 October 2008 в 08:20
поделиться

4 ответа

Вы получаете больше, чем это на самом деле в зависимости от того, что Вы делаете. Проверьте это объясняет страницу плана . Я принимаю немного здесь, что Вы используете Oracle и знаете, как запустить скрипт для отображения вывода плана. То, что может быть более важным для запуска с, смотрит на левую сторону для использования конкретного индекса или не и как тот индекс используется. Необходимо видеть вещи как" (Полный)", "(Индексом Rowid)", и т.д. при выполнении соединений. Стоимость была бы следующей вещью посмотреть на с более низкими ценами, являющимися лучше, и Вы заметите что при выполнении соединения, которое не использует индекс, можно получить очень большую стоимость. Можно также хотеть читать, детали об эти объясняют столбцы .

плана
8
ответ дан 30 November 2019 в 00:55
поделиться

Это - крупная область знаний (иначе черная магия).

подход я обычно взятие:

  1. Выполнение рассматриваемый SQL-оператор,
  2. Добираются, фактический план (ищите dbms_xplan),
  3. Сравнивают предполагаемое количество строк (кардинальность) по сравнению с фактическим количеством строк. Большая разница указывает, что проблема, которая будет зафиксирована (например, индекс, гистограмма)
  4. , Рассматривают, можно ли создать индекс для ускорения части процесса (обычно, где Вы концептуально думаете, что план должен пойти сначала). Попробуйте некоторые индексы.

необходимо понять O () влияние различных индексов в контексте того, что Вы спрашиваете базу данных. Это помогает Вам понять структуры данных как B-деревья, хеш-таблицы и т.д. Затем создать индекс, который мог бы работать и повторить процесс.

, Если Oracle решает не использовать Ваш индекс, подайте заявку, ИНДЕКС () подсказывают и смотрят на новый план. Стоимость будет больше, чем план, который она действительно выбирала - это - то, почему она не выбрала Ваш индекс. План, которому подсказывают, мог бы привести к некоторому пониманию о том, почему Ваш индекс не хорош.

4
ответ дан 30 November 2019 в 00:55
поделиться

Вы получили нечеткий конец леденца на палочке.

нет абсолютно никакого пути, в изоляции, без тонны дополнительной информации и опыта, чтобы посмотреть на объяснить план и определить то, что (если что-нибудь) вызывает меньше, чем оптимальная производительность. Если бы оптимизация запросов могла бы быть уменьшена до 10 процессов шага, она была бы сделана автоматизированным процессом. Я собирался перечислить все вещи, которые необходимо понять, чтобы быть эффективными в этом, но это было бы очень длинным списком.

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

Серьезно, доберитесь, книга Lewis Jonathan об основанной на стоимости Oracle Fundementals

Получают книгу Tom Kyte по Архитектуре базы данных Oracle и арендуют каюту в лесах в течение нескольких недель.

6
ответ дан 30 November 2019 в 00:55
поделиться

Я также предполагаю, что Вы используете Oracle. И я также рекомендую проверить объяснить веб-страницу плана для начинающих. Существует много к оптимизации, но она может быть изучена.

Несколько подсказок следуют:

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

115-секундный, сделайте быструю проверку для проверки запросов, которые Вы оптимизируете, логически корректны. Это звучит абсурдным, но я не могу сказать Вам количество раз, меня попросили совета относительно медленного рабочего запроса, только чтобы узнать, что это иногда давало неправильные ответы! И как оказалось, отладка запроса часто, оказывалось, ускоряла его также.

, В частности, ищите фразу "Декартово Соединение" в объяснить плане. Если Вы видите его там, возможности ужасно хороши, что Вы нашли неумышленное декартово соединение. Обычный шаблон для неумышленного декартова соединения - то, что ИЗ пункта перечисляет таблицы, разделенные запятой, и условия объединения находятся в операторе Where. За исключением того, что одно из условий объединения отсутствует, так, чтобы Oracle не имела никакого выбора, кроме как выполнить декартово соединение. С большими таблицами это - авария производительности.

возможно видеть Декартово Соединение в объяснить плане, где запрос логически корректен, но я связываю это с более старыми версиями Oracle.

Также ищут неиспользованный составной индекс. Если первый столбец составного индекса не используется в запросе, Oracle может использовать индекс неэффективно, или нисколько. Позвольте мне дать пример:

запрос был:

select * from customers    
where
     State = @State
     and ZipCode = @ZipCode

(DBMS не была Oracle, таким образом, синтаксис отличался, и я забыл исходный синтаксис).

А быстрый быстрый взгляд на индексы показал индекс на Клиентах со столбцами (Страна, состояние, ZipCode) в том порядке. Я изменил запрос для чтения

  select * from customers
   where Country = @Country
      and State = @State
      and ZipCode = @ZipCode

, и теперь он работал приблизительно через 6 секунд вместо приблизительно 6 минут, потому что оптимизатор смог использовать индекс для хорошего преимущества. Я спросил прикладных программистов, почему они опустили страну от критериев, и это было их ответом: они знали, что все адреса имели страну, равную 'США', таким образом, они полагали, что могли ускорить запрос путем пропуска того критерия!

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

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

Удача, подходящая к скорости при оптимизации!

7
ответ дан 30 November 2019 в 00:55
поделиться
Другие вопросы по тегам:

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