
【计】 composite index
complex; composite; compound
【化】 recombination
【医】 combination; recombination
【经】 compound
index; reference
【计】 X
【医】 index
复合索引(Composite Index)是数据库领域的关键概念,指对数据库表中多个列组合建立的索引结构。其核心作用是通过预先排序的键值组合,加速涉及多列的查询操作。以下是详细解释:
对表中两个或以上列联合创建的索引,索引键按声明顺序存储列值的组合。例如:
CREATE INDEX idx_name_age ON users (last_name, first_name, age);
数据结构
基于B+树或B树结构,索引键按列顺序逐级排序(如先按last_name
排序,相同last_name
下再按first_name
排序)。
公式表示索引键:
$$ text{Key} = (text{col}_1, text{col}_2, dots, text{col}_n) $$
查询优化场景
WHERE last_name = 'Smith'
可利用索引,但仅WHERE first_name = 'John'
无法利用)。SELECT last_name FROM users WHERE last_name = 'Smith'
)。多条件查询
-- 可利用索引 (last_name, first_name)
SELECT * FROM users
WHERE last_name = 'Smith' AND first_name = 'John';
排序优化
-- 可利用索引 (last_name, age) 避免额外排序
SELECT * FROM users
ORDER BY last_name, age;
对比项 | 复合索引 | 单列索引 |
---|---|---|
索引键结构 | 多列组合 | 单列 |
查询覆盖范围 | 支持多列组合查询 | 仅支持单列条件 |
存储效率 | 减少冗余索引数量 | 可能需多个独立索引 |
排序优化 | 支持多列排序 | 仅支持单列排序 |
数据库官方文档
技术标准文献
行业实践指南
通过合理设计复合索引,可显著提升数据库查询性能,但需遵循最左前缀原则并权衡索引维护成本。
复合索引(Composite Index),又称联合索引或组合索引,是数据库中对多个列联合创建的索引结构。以下从核心定义、工作原理、使用场景及设计原则四方面进行解释:
复合索引指在数据库表的两个或更多列上建立的索引。例如,对employees
表的(name, department)
两列创建索引,可加速涉及这两个字段的联合查询。
索引结构
复合索引按创建时指定的列顺序存储数据(类似电话簿先按姓氏再按名字排序)。若索引为(a,b,c)
,则数据先按a
排序,a
相同再按b
排序,依次类推。
最左前缀原则
查询必须包含索引的最左侧列才能生效。例如:
WHERE a=1
、WHERE a=1 AND b=2
WHERE b=2
、WHERE c=3
加速多条件查询
对WHERE name='张三' AND department='技术部'
类查询,效率远高于单列索引。
减少索引数量
一个复合索引可替代多个单列索引,降低存储和维护成本。
优化排序/分组
对ORDER BY a,b
或GROUP BY a,b
操作能直接利用索引排序,避免文件排序。
列顺序优先级
高频查询列优先放在左侧,区分度高的列(如身份证号)更适合作为前导列。
避免过度索引
建议索引列不超过3列,过多会导致索引体积过大,降低写入性能。
注意覆盖查询
若索引包含查询所需全部字段(如INDEX(a,b)
+SELECT a,b
),可直接通过索引返回数据,无需回表。
提示:可通过
EXPLAIN
语句分析查询是否命中复合索引。对于复杂业务场景,建议结合华为云开发者联盟等专业文档进一步优化。
【别人正在浏览】