Я пытаюсь узнать об индексации. Я посмотрел на фактические индексы, используемые в базе данных на работе.
Я посмотрел на два случайных индекса:
SELECT
INDEX_NAME, INDEX_TYPE, LEAF_BLOCKS, DISTINCT_KEYS
FROM ALL_INDEXES
WHERE TABLE_NAME = 'TRANS'
AND INDEX_NAME IN ('TRANS_PK','TRANS_ORD_NO')
Это дает:
INDEX_NAME | INDEX_TYPE | LEAF_BLOCKS | DISTINCT_KEYS |
TRANS_PK | NORMAL | 13981 | 3718619 |
TRANS_ORD_NO| NORMAL | 17052 | 43904 |
Это то, что не имеет смысла для меня; не должно отличаться (column_name) от фактической таблицы, чтобы получить то же число Это не так!
SELECT COUNT(DISTINCT ORD_NO) FROM trans
.. дает 20273
TRANS_PK - это индекс для столбца с именем NO.
SELECT COUNT(distinct NO) FROM trans
... дает 4 328 622
Что я не получаю здесь? Выделение отличного должно приводить к тому же номеру, что и в столбце «разные ключи» в таблице ALL_INDEXES?