复合索引是指在一个索引中包含两个或多个列的索引。这种索引可以显著提高多列查询的性能,因为它允许数据库引擎在一个步骤中定位到满足多个条件的行。
ORDER BY
或GROUP BY
子句,并且这些子句中的列是复合索引的一部分,那么数据库引擎可以利用索引来优化这些操作。ORDER BY
或GROUP BY
子句,并且这些子句中的列是复合索引的一部分,那么复合索引可以提高排序和分组的效率。原因:
解决方法:
假设我们有一个表users
,包含以下列:id
, name
, age
, city
。
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT,
city VARCHAR(100)
);
我们可以创建一个复合索引:
CREATE INDEX idx_name_age ON users(name, age);
查询示例:
SELECT * FROM users WHERE name = 'John' AND age = 30;
在这个查询中,复合索引idx_name_age
可以被有效利用。
通过合理使用复合索引,可以显著提高数据库查询的性能。