Key
Logical concept, structures to identify records within a table
ex) Primary Key, Foreign key
통상 Key 를 생성하면 DBMS 에서 해당 key-column 에 index 를 같이 생성해 걸어준다.
Index
Physical structures to store the data and how to optimize data processing
However, an index-only scan can return the contents of non-key columns without having to visit the index's table, since they are available directly from the index entry.
Furthermore, B-tree deduplication is never used with indexes that have a non-key column.
non-key column에 index 를 걸 수 있지만, unique constraint 등은 걸리지 않는다. 👉🏻 유일성을 보장할 수 없다.
Include when create index
index 를 생성할 때 `INCLUDE` 옵션으로 이미 존재하는 index 에 non-key column 을 index entry에 포함시킬 수 있다.
y 값이 인덱스 값에 포함되었기 때문에 인덱스 값만 조회해서 바로 값을 얻어올 수 있다.
👉🏻 'Heap' 을 긁어볼 필요가 없어진다.
📝 Heap: Non-key columns || Not indexed columns 이 저장되는 공간
⚠️ 자주 실행할 쿼리 형태에 따라
Include 를 여부를 결정해야한다.
x,y 이외에 non-column 이 SELECT에 포함될 경우
index-only scan 이 무색해진다.
(Heap hit가 필요해지기 때문에)
🔗 Reference