powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / На могу хинтами можно добиться хорошего плана
10 сообщений из 10, страница 1 из 1
На могу хинтами можно добиться хорошего плана
    #39416772
Есть таблица с несколькими индексами - bitmap и btree
Нашёл хороший план в прошлых выполнениях и никак не могу хинтами его воспроизвести
Хороший план такой - сливаются два битмап-индекса и один btree:

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

у тебя в плане так и происходит... Просто из btree возвращаются rowid'ы и их приходится конвертить к структуре bitmap
...
Рейтинг: 0 / 0
На могу хинтами можно добиться хорошего плана
    #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
На могу хинтами можно добиться хорошего плана
    #39416888
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значение скрытого параметра _b_tree_bitmap_plans не менялось?
...
Рейтинг: 0 / 0
На могу хинтами можно добиться хорошего плана
    #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
На могу хинтами можно добиться хорошего плана
    #39416959
Вячеслав ЛюбомудровЗначение скрытого параметра _b_tree_bitmap_plans не менялось?Нет, _b_tree_bitmap_plans - TRUE
xtenderтебе нужен другой хинт: BITMAP_TREE Но же нет такого хинта?
Oracle 12c
...
Рейтинг: 0 / 0
На могу хинтами можно добиться хорошего плана
    #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
На могу хинтами можно добиться хорошего плана
    #39417129
xtender, да, спасибо, получилось!
Никогда не пробовал такое:
Код: plsql
1.
SELECT /*+ BITMAP_TREE("CONNECTOR"@"SEL$1" AND(("CONNECTOR"."ID") ("CONNECTOR"."FIELD1") ("CONNECTOR"."FIELD3"))) */
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / На могу хинтами можно добиться хорошего плана
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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