
【計】 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
語句分析查詢是否命中複合索引。對于複雜業務場景,建議結合華為雲開發者聯盟等專業文檔進一步優化。
苯基硼酸變體的查帳備忘錄齒形的磁流體次沒食子酸铋粗雜大棗多處理機方式芳基硫尿發射特性風選台固定電阻黑鉛環甲關節的彙回禮鍵的折射性堅貞的局部硬化辣椒硬膏連載氯化鉻惱恨陪審長缺席測試任意性制裁十八烷酰胺受體-給體配位化合物投以一瞥