# Indexes

# Overview
- What is the purpose and structure of an index?
- How does an index work?
- Why are my queries slow?
- How do I improve my performance? (Live Demo)
### What is the purpose of an index?

### How in an index stored?
- Doubly linked list

### B-tree

### Tree Traversal
`>= 57`

### 3 Steps of Index Lookup
1. Tree Traversal
2. Following leaf-node chain
3. Fetching table data
### Why is my index slow?
1. Tree Traversal (Fast)
2. Following leaf-node chain (Slow)
3. Fetching table data (Slow)
### `EXPLAIN` `type`
1. `system`
2. `const`
3. `eq_ref`
4. `ref`
5. `range`
6. `index`
7. `all`
# References
- SQL Perfomance Explained by Markys Winad
- https://use-the-index-luke.com
- https://dev.mysql.com/doc/internals/en/optimizer-determining-join-type.html
- https://dev.mysql.com/doc/refman/8.0/en/explain-output.html
- https://stackoverflow.com/questions/4508055/what-does-eq-ref-and-ref-types-mean-in-mysql-explain