Я очень новичок в изучении Oracle, изучая доступ к индексу, я должен прийти к выводу, что, допустим, у меня есть таблица emp.концепция доступа к индексу
table emp
---------------------------
empno ename salary mgrid
---------------------------
1 ab 200 2
2 bn 900 3
3 bh 900 1
4 ah 890 4
5 kk 67 0
6 ac 9090
и это, как уникальный индекс первичного ключа EMPNO создается
index table(suppose)
--------------------
rowid index value
---------------------
xyzz 1
- 2
- 3
- 4
- 5
- 6
где '-' означает, что некоторые шестнадцатеричное значение, предположим, я пишу запрос, что
select * from emp where empno ='5'
то вынет ROWID соответствует значению индекса 5 и принесите строку соответствует 5 EMPNO от эх таблиц
Теперь мои сомнений в том, что здесь это выборке из index_table, но найти RowId это также сканируя всю таблицу (index_table) до 5, и те же самые функции rowid, чтобы найти строку, то чем она отличается от таблицы без индекса?, там также мы сканируем всю таблицу до 5 empno.
только преимущество - индекс хранится в порядке возрастания.
я знаю, что я не прав, но может кто-то объяснить это
**Doubt**
ли полное сканирование таблицы, сканирует каждый столбец строк независимо от этого состояния фильтра? позволяет взять запрос, который я использовал выше, если нет первичного ключа в этой таблице emp, тогда он будет выполнять полное сканирование таблицы, затем для empno = 5, будет ли он проверять каждое значение empno строки или будет сканировать empname, зарплату и mrgid также?
Спасибо Рене за прекрасное объяснение, но вы можете убрать еще одно сомнение, упомянутое в вопросе, вышедшем выше, я недавно обновил, что –