sql5 3.5.0

SQLite compatible database with CJK FTS5 full-text search
# Index Scan - 索引查詢理論

`src/planner/plan.rs`

## 索引掃描概念

索引掃描利用索引結構快速定位資料,避免全表掃描。

```
無索引:Table Scan → O(n)
有索引:Index Scan → O(log n) + 範圍讀取
```

## 索引掃描類型

### 唯一掃描 (Point Search)
精確值查詢:
```sql
WHERE id = 5
→ 直接通过 B+Tree 找到
```

### 範圍掃描 (Range Search)
區間查詢:
```sql
WHERE age > 18 AND age <= 30
→ B+Tree 找到起始點,順序讀取
```

### 多索引選擇
多條件查詢可能使用多個索引:
```sql
WHERE age = 25 AND city = 'Taipei'
→ 可用 age_idx 或 city_idx
```

## 索引代價估算

```
Cost = index_probe_cost + range_scan_cost
     = log(m) + (sel × n)
```

## Index Skip Scan

索引跳躍掃描,適用於:
```sql
WHERE last_name = 'Smith'
-- 但查詢包含 first_name
-- 可跳過 last_name 相同的區段
```

## 理論參考

- Database System Concepts, Chapter 15
- Chaudhuri, "An Overview of Query Optimization in Relational Systems"