Requirement | Heap | Hash | ISAM | B-tree |
Pattern matching | 4 | 4 | 1 | 1 |
Range searches | 4 | 4 | 1 | 1 |
Exact-match keyed retrievals | 4 | 1 | 2 | 2 |
Sorted data (without sort-by) | 4 | 4 | 2 | 1 |
Concurrent updates | 4 | 1 | 1 | 2 |
Addition of data without needing to modify | 2 | 3 | 3 | 1 |
Sequential addition of data (incremental key) | 1* | 2 | 4 | 1 |
Initial bulk copying of data | 1 | 2 | 2 | 2 |
Table growth: none, static | N/A | 1 | 1 | 2 |
Table growth: some, periodically plan to modify | N/A | 1 | 1 | 2 |
Table growth: great deal -- too fast to modify | 3 | 3 | 3 | 1 |
Table size: small (under 15 main pages) | 2 | 1 | 1 | 3 |
Table size: medium (disk space available for any modify) | 4 | 1 | 1 | 1 |
Frequent deletions | 4 | 1 | 1 | 3 |
Frequent updates | 4 | 1 | 1 | 2 |
Secondary index structure | N/A | 1 | 1 | 1 |
* Refers to secondary indexes used with a heap table. |