MySQL - 4种基本索引、聚簇索引和非聚索引、索引失效情况、SQL 优化
warning:
这篇文章距离上次修改已过193天,其中的内容可能已经有所变动。
在MySQL中,索引是一种数据结构,可以帮助快速查找、定位存储在数据表中的特定记录。MySQL中常见的索引类型包括:
- 主键索引(Primary Key):唯一标识表中的每行数据,不能有空值。
- 唯一索引(Unique):确保索引列的值是唯一的。
- 全文索引(Fulltext):用于全文检索。
- 普通索引(Index):基本索引类型,没有唯一性限制。
聚簇索引和非聚簇索引是根据数据存储方式来区分的:
- 聚簇索引(Clustered Index):数据行和相关的索引在同一个结构中,索引的叶子节点包含了行的全部数据。在InnoDB存储引擎中,主键自动成为聚簇索引。
- 非聚簇索引(Non-Clustered Index):数据行和索引分开存储,在InnoDB中称为二级索引或者辅助索引。
索引失效的情况:
- 使用函数操作索引列。
- 使用不等于(<>)或者范围查询(BETWEEN、>、<、LIKE '%xxx')。
- 索引列有NULL值,使用IS NULL或IS NOT NULL。
- 复合索引,没有遵守最左前缀原则。
- 使用JOIN查询,没有正确使用ON或者USING子句。
- 使用了FORCE INDEX。
SQL优化:
- 尽量使用索引的第一列。
- 使用最左前缀查询。
- 避免不必要的SELECT *,只选取需要的列。
- 使用合适的数据类型,减少数据转换。
- 避免在索引列上进行计算或函数操作。
- 使用LIMIT限制查询结果集。
- 优化JOIN查询,确保ON和USING子句正确使用。
- 使用EXPLAIN分析查询计划。
以上是对MySQL索引和优化的概述,具体实现和优化取决于查询需求和数据表的结构。
评论已关闭