Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / На могу хинтами можно добиться хорошего плана / 10 сообщений из 10, страница 1 из 1
10.03.2017, 12:01
    #39416772
На могу хинтами можно добиться хорошего плана
Есть таблица с несколькими индексами - bitmap и btree
Нашёл хороший план в прошлых выполнениях и никак не могу хинтами его воспроизвести
Хороший план такой - сливаются два битмап-индекса и один btree:

У меня через INDEX_COMBINE получается только соединить два bitmap - какими хинтами можно прикрутить к этим bitmap ещё и btree?
...
Рейтинг: 0 / 0
10.03.2017, 12:03
    #39416775
На могу хинтами можно добиться хорошего плана
Картинка
...
Рейтинг: 0 / 0
10.03.2017, 12:04
    #39416778
На могу хинтами можно добиться хорошего плана
Ещё раз - картинка
...
Рейтинг: 0 / 0
10.03.2017, 13:15
    #39416854
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На могу хинтами можно добиться хорошего плана
планы планы,

у тебя в плане так и происходит... Просто из btree возвращаются rowid'ы и их приходится конвертить к структуре bitmap
...
Рейтинг: 0 / 0
10.03.2017, 13:26
    #39416865
pihel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На могу хинтами можно добиться хорошего плана
планы планы,

возьми старый план из awr с секцией outline
select * from table(DBMS_XPLAN.DISPLAY_AWR(:SQL_ID, :SQL_PLAN_HASH_VALUE, null, 'basic +outline +peeked_binds +note') )

скопируй от туда нужные хинты в новый запрос

если sql_id не поменялся, то прибей старый план через baseline
...
Рейтинг: 0 / 0
10.03.2017, 13:39
    #39416888
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На могу хинтами можно добиться хорошего плана
Значение скрытого параметра _b_tree_bitmap_plans не менялось?
...
Рейтинг: 0 / 0
10.03.2017, 13:58
    #39416906
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На могу хинтами можно добиться хорошего плана
планы планы,

блин, кусками прочел сообщение и не понял вопроса. В обще тебе нужен другой хинт: BITMAP_TREE
Вот пример:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
SQL> explain plan for
  2  select *
  3  from test
  4  where n100=9
  5  and n3=0
  6  and n5=0;

Explained.

SQL> @xplan_outline

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
Plan hash value: 2863980500

-----------------------------------------------------------------------------------------
| Id  | Operation                       | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                |       |    67 |   603 |    20   (0)| 00:00:01 |
|   1 |  BITMAP CONVERSION TO ROWIDS    |       |    67 |   603 |    20   (0)| 00:00:01 |
|   2 |   BITMAP AND                    |       |       |       |            |          |
|   3 |    BITMAP CONVERSION FROM ROWIDS|       |       |       |            |          |
|*  4 |     INDEX RANGE SCAN            | IX100 |       |       |     2   (0)| 00:00:01 |
|*  5 |    BITMAP INDEX SINGLE VALUE    | IX5   |       |       |            |          |
|*  6 |    BITMAP INDEX SINGLE VALUE    | IX3   |       |       |            |          |
-----------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   4 - access("N100"=9)
   5 - access("N5"=0)
   6 - access("N3"=0)

20 rows selected.


OUTLINES
---------------------------------------------------------------------------------------------------------
,q'[BITMAP_TREE(@"SEL$1" "TEST"@"SEL$1" AND(("TEST"."N100") ("TEST"."N5") ("TEST"."N3")))]'
,q'[OUTLINE_LEAF(@"SEL$1")]'
,q'[ALL_ROWS]'
,q'[DB_VERSION('12.1.0.2')]'
,q'[OPTIMIZER_FEATURES_ENABLE('12.1.0.2')]'
,q'[IGNORE_OPTIM_EMBEDDED_HINTS]'


BITMAP_TREE(@"SEL$1" "TEST"@"SEL$1" AND(("TEST"."N100") ("TEST"."N5") ("TEST"."N3")))
...
Рейтинг: 0 / 0
10.03.2017, 14:43
    #39416959
На могу хинтами можно добиться хорошего плана
Вячеслав ЛюбомудровЗначение скрытого параметра _b_tree_bitmap_plans не менялось?Нет, _b_tree_bitmap_plans - TRUE
xtenderтебе нужен другой хинт: BITMAP_TREE Но же нет такого хинта?
Oracle 12c
...
Рейтинг: 0 / 0
10.03.2017, 15:32
    #39417019
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На могу хинтами можно добиться хорошего плана
планы планыxtenderтебе нужен другой хинт: BITMAP_TREE Но же нет такого хинта?
Oracle 12c
Код: plaintext
1.
2.
3.
4.
5.
6.
SQL> @ hint  BITMAP_TREE

NAME                           SQL_FEATURE                         CLASS                          VERSION              INVERSE
------------------------------ ----------------------------------- ------------------------------ -------------------- ------------------------------
BITMAP_TREE                    QKSFM_BITMAP_TREE                   ACCESS                         10.2.0.1
BITMAP_AND                     QKSFM_BITMAP_TREE                   BITMAP_AND                     12.1.0.1
...
Рейтинг: 0 / 0
10.03.2017, 17:36
    #39417129
На могу хинтами можно добиться хорошего плана
xtender, да, спасибо, получилось!
Никогда не пробовал такое:
Код: plsql
1.
SELECT /*+ BITMAP_TREE("CONNECTOR"@"SEL$1" AND(("CONNECTOR"."ID") ("CONNECTOR"."FIELD1") ("CONNECTOR"."FIELD3"))) */
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / На могу хинтами можно добиться хорошего плана / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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