MySQL索引最左原则是指在使用复合索引时,查询条件必须从索引的最左边开始匹配,才能有效地利用索引。复合索引是由多个列组成的索引,例如(column1, column2, column3)
。
假设我们有一个包含order_id
、customer_id
和order_date
三个列的表,并且我们创建了一个复合索引(order_id, customer_id, order_date)
。以下是一些查询场景:
(order_id, customer_id)
,查询条件应该是WHERE order_id = 123 AND customer_id = 456
,而不是WHERE customer_id = 456
。假设我们有一个表orders
,结构如下:
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
amount DECIMAL(10, 2)
);
创建复合索引:
CREATE INDEX idx_order_customer_date ON orders(order_id, customer_id, order_date);
有效利用索引的查询:
SELECT * FROM orders WHERE order_id = 123 AND customer_id = 456;
无法有效利用索引的查询:
SELECT * FROM orders WHERE customer_id = 456;
通过理解最左原则及其应用场景,可以有效提高MySQL查询的性能。