- 10.3.1 MySQL 如何使用索引10.3.1 How MySQL Uses Indexes
- 10.3.2 主键优化10.3.2 Primary Key Optimization
- 10.3.3 空间索引优化10.3.3 SPATIAL Index Optimization
- 10.3.4 外键优化10.3.4 Foreign Key Optimization
- 10.3.5 列索引10.3.5 Column Indexes
- 10.3.6 多列索引10.3.6 Multiple-Column Indexes
- 10.3.7 验证索引使用情况10.3.7 Verifying Index Usage
- 10.3.8 InnoDB 和 MyISAM 索引统计收集10.3.8 InnoDB and MyISAM Index Statistics Collection
- 10.3.9 B 树与哈希索引比较10.3.9 Comparison of B-Tree and Hash Indexes
- 10.3.10 索引扩展的使用10.3.10 Use of Index Extensions
- 10.3.11 优化器使用生成列索引10.3.11 Optimizer Use of Generated Column Indexes
- 10.3.12 隐形索引10.3.12 Invisible Indexes
- 10.3.13 降序索引10.3.13 Descending Indexes
- 10.3.14 从 TIMESTAMP 列进行索引查找10.3.14 Indexed Lookups from TIMESTAMP Columns
提高SELECT操作性能的最佳方法是在查询中测试的一个或多个列上创建索引。索引条目就像指向表行的指针,使查询能够快速确定哪些行符合WHERE子句中的条件,并检索这些行的其他列值。MySQL 的所有数据类型都可以被索引。The best way to improve the performance of
SELECT operations is to create
indexes on one or more of the columns that are tested in the
query. The index entries act like pointers to the table rows,
allowing the query to quickly determine which rows match a
condition in the WHERE clause, and retrieve the
other column values for those rows. All MySQL data types can be
indexed.
虽然为查询中使用的每一列创建索引可能很诱人,但不必要的索引会浪费空间,并且会增加 MySQL 决定使用哪个索引的时间。索引还会增加插入、更新和删除的成本,因为每个索引都必须更新。你必须找到合适的平衡,以使用最佳的索引集合实现快速查询。Although it can be tempting to create an indexes for every possible column used in a query, unnecessary indexes waste space and waste time for MySQL to determine which indexes to use. Indexes also add to the cost of inserts, updates, and deletes because each index must be updated. You must find the right balance to achieve fast queries using the optimal set of indexes.