У меня есть таблица настройки, которая содержит около 640 м записей, и я пытаюсь создать индекс.
Способ выбора записей включает в себя что-то вроде этого:
index_i9(ORA_HASH(placard_bcd,128),event);
Тем не менее, это все еще возвращает около 3-4 миллионов записей, и из моего тестирования это занимает много времени (~ 12 минут или около того).
Это плохая идея как индекс? Я не думаю, что получение 3-4 миллионов записей должно занять столько времени.
Есть идеи?
Редактировать (добавить дополнительную информацию):
В таблице есть несколько столбцов, но я не знаю, нужно ли мне перечислить все из них:
table_a
container NOT NULL NUMBER(19),
placard_bcd NOT NULL VARCHAR2(30),
event NOT NULL VARCHAR(5),
bin_number NUMBER(3),
...
...
Требуется около 12 минут, чтобы вернуть все записи, которые будут возвращаться на основе индекса выше. Итак, чтобы предоставить мне все 3-4 миллиона записей.
Используемый запрос выглядит примерно так:
select barcode, event, bin_number
from table_a
where ora_hash(barcode,128) = 105;
and event in ('CLOS','PASG','BUILD');
План объяснения представлен следующим образом:
Plan hash value: 4185630329
-----------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 35074 | 4212K| 338 (0)| 00:00:01 |
| 1 | INLIST ITERATOR | | | | | |
| 2 | TABLE ACCESS BY INDEX ROWID BATCHED| TABLE_A | 35074 | 4212K| 338 (0)| 00:00:01 |
|* 3 | INDEX RANGE SCAN | TABLE_A_I9 | 14030 | | 14 (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - access(("EVENT_TYPE"='BUILD' OR "EVENT_TYPE"='CLOS' OR "EVENT_TYPE"='PASG') AND
ORA_HASH("PLACARD_BCD",128)=105)
Все кажется правильным, но мне все еще нужно время, чтобы предоставить мне записи.