powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / оптимизация запроса
5 сообщений из 5, страница 1 из 1
оптимизация запроса
    #39967379
reaque
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oracle Database 11.2.0.3.0
есть таблица на 30 млн строк.
на таблице нет индексов

сделал запрос к таблице с отбором по реквизиту Marka= 1111
Код: plsql
1.
2.
3.
4.
5.
6.
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |    16M|  1964M|   150K  (1)| 00:30:02 |
|*  1 |  TABLE ACCESS FULL| NOM  |    16M|  1964M|   150K  (1)| 00:30:02 |
--------------------------------------------------------------------------




добавил индекс create index MyIndex on Table1(marka);
сделал запрос к таблице с отбором по реквизиту Marka= 1111
Код: plsql
1.
2.
3.
4.
5.
6.
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |    16M|  1964M|   150K  (1)| 00:30:02 |
|*  1 |  TABLE ACCESS FULL| NOM  |    16M|  1964M|   150K  (1)| 00:30:02 |
--------------------------------------------------------------------------




выполнил анализ индекса analyze index MyIndex compute statistics;
сделал запрос к таблице с отбором по реквизиту Marka= 1111
Код: plsql
1.
2.
3.
4.
5.
6.
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |    16M|  1964M|   150K  (1)| 00:30:02 |
|*  1 |  TABLE ACCESS FULL| NOM  |    16M|  1964M|   150K  (1)| 00:30:02 |
--------------------------------------------------------------------------




добавил в запрос хинт SELECT /*+ index(MyIndex) */ ...
сделал запрос к таблице с отбором по реквизиту Marka= 1111
Код: plsql
1.
2.
3.
4.
5.
6.
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |    16M|  1964M|   150K  (1)| 00:30:02 |
|*  1 |  TABLE ACCESS FULL| NOM  |    16M|  1964M|   150K  (1)| 00:30:02 |
--------------------------------------------------------------------------



почему не используется индекс?


запустил SQL Tuning Advisor
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 Для этого оператора найден потенциально более оптимальный план выполнения.

  Recommendation (estimated benefit: 98.61%)
  ------------------------------------------
  - С целью использования параллельного выполнения для этого оператора
    рекомендуется принять предлагаемый профиль SQL.
    execute dbms_sqltune.accept_sql_profile(task_name => 'staName17406',
            task_owner => 'SYSTEM', replace => TRUE, profile_type =>
            DBMS_SQLTUNE.PX_PROFILE);

  Выполнение этого запроса параллельно с DOP 80 улучшит время его отклика на
  98.61% в сравнении с исходным планом. Но при включении параллельного
  выполнения возникает ряд накладных расходов. Повысится потребление
  операторами памяти приблизительно на 11.03%, что может вызвать снижение
  пропускной способности системы. Кроме того, т.к. ресурсы потребляются за
  относительно небольшой отрезок времени, время отклика текущего оператора
  может иметь отрицательное влияние, если не обеспечена надлежащая емкость



Как узнать какие конкретно операции оптимизатор выполнит, если запустить execute dbms_sqltune.accept_sql_profile, чтобы их можно было воспроизвести вручную, при необходимости откатить назад?
...
Рейтинг: 0 / 0
оптимизация запроса
    #39967394
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
reaque
почему не используется индекс?
пересобрать статистику надо по таблице и показать


reaque
Как узнать какие конкретно операции оптимизатор выполнит, если запустить execute dbms_sqltune.accept_sql_profile, чтобы их можно было воспроизвести вручную, при необходимости откатить назад?
https://github.com/xtender/xt_scripts/blob/master/profiles/show_hints.sql
...
Рейтинг: 0 / 0
оптимизация запроса
    #39967402
reaque
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасиб, после выполнения
Код: plsql
1.
analyze table MyTable compute statistics;


индекс начал использоваться.
...
Рейтинг: 0 / 0
оптимизация запроса
    #39967421
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
reaque,

Вы до сих пор используете ANALYZE TABLE вместо dbms_stats ? Тогда мы идем к вам :)
...
Рейтинг: 0 / 0
оптимизация запроса
    #39969520
Melkomyagkii_newbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
reaque

добавил в запрос хинт SELECT /*+ index(MyIndex) */ ...

неправильный синтаксис хинта
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / оптимизация запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]