## 8.3 优化和索引

[8.3.1 MySQL 如何使用索引](mysql-indexes.html)
[8.3.2 主键优化](primary-key-optimization.html)
[8.3.3 SPATIAL 索引优化](spatial-index-optimization.html)
[8.3.4 外键优化](foreign-key-optimization.html)
[8.3.5 列索引](column-indexes.html)
[8.3.6 多列索引](multiple-column-indexes.html)
[8.3.7 验证索引使用情况](verifying-index-usage.html)
[8.3.8 InnoDB 和 MyISAM 索引统计收集](index-statistics.html)
[8.3.9 B-Tree和哈希索引的比较](index-btree-hash.html)
[8.3.10 索引扩展的使用](index-extensions.html)
[8.3.11 优化器使用生成的列索引](generated-column-index-optimizations.html)
[8.3.12 不可见索引](invisible-indexes.html)
[8.3.13 降序索引](descending-indexes.html)
[8.3.14 TIMESTAMP 列的索引查找](timestamp-lookups.html)

[](<>)

提高性能的最佳方法[`选择`](select.html)操作是在查询中测试的一个或多个列上创建索引。索引条目的作用类似于指向表行的指针，允许查询快速确定哪些行与表中的条件匹配`在哪里`子句，并检索这些行的其他列值。所有 MySQL 数据类型都可以被索引。

尽管为查询中使用的每个可能的列创建索引可能很诱人，但不必要的索引会浪费空间和时间，让 MySQL 确定要使用哪些索引。索引还会增加插入、更新和删除的成本，因为每个索引都必须更新。您必须找到适当的平衡，以使用最佳索引集实现快速查询。
