MySQL中的联合索引(Composite Index)是指在一个索引中包含两个或多个列。联合索引可以提高多列查询的效率,因为它允许数据库引擎在一个索引中同时查找多个列的值。
联合索引可以是升序或降序排列的,具体取决于创建索引时指定的顺序。
假设有一个表 users
,包含以下列:
CREATE TABLE users (
id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
age INT,
email VARCHAR(100)
);
如果经常有如下查询:
SELECT * FROM users WHERE first_name = 'John' AND last_name = 'Doe';
可以创建一个联合索引:
CREATE INDEX idx_first_last ON users (first_name, last_name);
原因:
解决方法:
假设有如下查询:
SELECT * FROM users WHERE first_name = 'John' AND age > 30;
虽然有 idx_first_last
索引,但由于 age
列不在索引中,查询可能不会使用索引。可以创建一个包含 first_name
和 age
的联合索引:
CREATE INDEX idx_first_age ON users (first_name, age);
通过合理使用联合索引,可以显著提高MySQL数据库的查询性能。
领取专属 10元无门槛券
手把手带您无忧上云